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订阅)
本文版权归作者和博客园共有,欢迎转载,
但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。