zoukankan      html  css  js  c++  java
  • iOS开发之NSBundle加载自定义cell需指定其的identifier

    【参考自】http://blog.csdn.net/yohunl/article/details/19619167

     在写cellForRowAtIndexPath方法的时候,经常会使用自己定义的cell,然后使用NSBundle的方式来加载。但是经常因为没有设置cell的reuseIdentifier属性而让cell并没有重用,但是,开发者有时候也是不一定知道的。所以,这个地方需要注意:

    有两种方法可以再使用NSBundle的方式创建Cell的时候指定cell的identifier。

    【1】代码方式:

    -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
        NSInteger row = indexPath.row;
        static NSString *cellString = @"CommonTableViewCell";
        CommonTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellString];
        if (cell == nil) {
            NSArray *nibArr = [[NSBundle mainBundle]loadNibNamed:cellString owner:self options:nil];
            cell = (CommonTableViewCell *)[nibArr firstObject];
            [cell setValue:cellString forKey:@"reuseIdentifier"];
            cell.accessoryType = UITableViewCellAccessoryNone;
        }
        
        cell.title.text = [tempDict objectForKey:@"title"];
        cell.content.text = [tempDict objectForKey:@"content"];
        
        return cell;
    }
    

    【2】使用xib文件的属性配置面板添加配置。如下图所示:


    只有指定了这样的两种方式,创建的cell才是重用的,如果没有指定创建的cell的identifier,cell是不会重用的,亲测。

    网上很多人关于NSBundle创建cell的写法都没有提到半个字需要指定identifier值的问题。。。有点坑~

  • 相关阅读:
    如何选择Html.RenderPartial和Html.RenderAction
    [转]使用 HTML5 WebSocket 构建实时 Web 应用
    基于.NET平台常用的框架整理
    0303
    XMLHTTP
    0120如何合并两个使用 System.Xml 使用 Visual C#.NET 的 XML 文档中的数据
    后台动态创建datatable0115
    笔记1126ASP.NET面试题(转)
    笔记1015
    数组与ARRAYLIST的关系与区别(转)
  • 原文地址:https://www.cnblogs.com/vokie/p/4897107.html
Copyright © 2011-2022 走看看