• UITableView学习之辨析两个方法:⓵dequeueReusableCellWithIdentifier与⓶dequeueReusableCellWithIdentifier:forIndexPath:


    使用storyboard显示UITableView时,
    如果不修改系统默认生成的
    tableView:cellForRowAtIndexPath:方法中的代码,
    必须为UITableViewCell注册(填写)重用标识符:identifier.
    必须要代码方法中的标识符一致.
    然后,就可以省略代码设置标识符的方法:
    (也就是那三行if语句)
    如下所示:

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
    static NSString *CellIdentifier = @"myCell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
    // if (nil == cell) {
    // cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
    // }
    //...
    return cell;
    }

    使用Storyboard建立的UITabeViewController,如果其中的Cell是已经注册过的//    static NSString *ID = @"Cell";    永远都会找到一个单元格,如果缓冲池中没有,会自动新建       dequeueReusableCellWithIdentifier 直接查询可重用单元格     dequeueReusableCellWithIdentifier:forIndexPath: 查询“注册的”可重用单元格,此方法中indexPath本身没有用处             强制判断是否注册了单元格          如果已经注册过单元格,以上两个方法等效。          如果在StoryBoard中指定了单元格的可重用标示符,单元格的优化将有系统接管,不再需要判断cell == nil    
    注释:注册Cell有两种方式:⓵图形界面,直接在storyboard的属性栏中代码⓶代码,代码使用一个以regist开头的注册方法.
    实例化UITableViewCell有两种组合方案:㊀未注册+if+ dequeueReusableCellWithIdentifier:㊁注册+ dequeueReusableCellWithIdentifier:forIndexPath:㊂注册+ dequeueReusableCellWithIdentifier:
    ㊀中注意点:何为未注册?(何时必须写if语句?)#解答#两种情况>1如果在storyboard中创建了UITableView但并没有拖拽UITableViewCell(则必须写if)>2未使用storyboard
    (xib同理)


    作者:
    出处:http://www.cnblogs.com/ChenYilong/(点击RSS订阅)
    本文版权归作者和博客园共有,欢迎转载,
    但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    简单地通过Python库使用python的socket编程
    js 实现继承的几种方式
    JAVA中获取当前系统时间
    IntelliJ Idea 常用快捷键列表
    关于报错:There is already 'xxxController' bean method的解决方法
    mysql 使用 GROUP BY 时报错 ERROR 1055 (42000)
    安装系统,用cmd进行分区
    Bootstrap关闭当前页
    bootstrap的日期选择器
    Bootstrap如何关闭弹窗
  • 原文地址:https://www.cnblogs.com/ChenYilong/p/3489938.html
Copyright © 2020-2023  润新知