繁体   English   中英

UITableView中的自定义UITableViewCell问题

[英]Custom UITableViewCell issue in UITableView

我有一个带有UIViewController的应用程序,其中包含一个使用自定义表格视图单元格的UITableView。 我已经成功地使用了与UITableViewControllers相同的自定义表视图单元格,但是这次是UIViewController中的UITableView。 我最初的想法是,它确实应该没有什么不同。 但是,由于某种原因,在我的cellForRowAtIndexPath中,在初始加载时,“ cell”并不是应该为零,因此永远不会调用实例化自定义单元的代码。

我已经通过使用界面生成器并通过手工编码使其具有相同的结果来创建了自定义单元格。 唯一值得注意的区别是,将代码与UITableViewController一起使用时,代码可以正常工作,但与包含UITableView的UIView一起使用时,代码将失败。

我已验证是否正确配置了单元格标识符,并在UIViewController中正确设置了数据源和委托。 自定义单元格的子类已正确设置。

-(FaveCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{

FaveCell *cell = (FaveCell*)[tableView dequeueReusableCellWithIdentifier:cellID];
if(cell == nil){
    // this line of code is never reached
    cell = [[FaveCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellID];
}

/* code to load controls

...

*/

return cell;
}

因此,当代码首次输入cellForRowAtIndexPath时,“ cell”应为nil,但不是。 同样,唯一值得注意的区别是UIView / UITableView与UITableViewController。 这对任何人有意义吗? 谁能提供解决方案? 谢谢!

但是,由于某种原因,在我的cellForRowAtIndexPath: ,在初始加载时, cell不是应该的nil ,因此从不调用实例化自定义单元的代码。

这是因为UITableView从iOS 5.0开始变得更加智能:如果通过指定自定义单元格类型告诉它想要的单元格类型,它将为您创建它们,因此if(cell == nil)代码的确不会输入。 文档中

如果dequeueReusableCellWithIdentifier:方法要求在情节提要中定义的单元格,则该方法将始终返回有效单元格。 如果没有等待使用的回收单元,则该方法将使用情节提要中的信息创建一个新单元。 这样就无需检查返回值是否为nil并手动创建一个单元格。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM