我在使用下面的代码时遇到问题,该代码基本上是从故事板实例化扩展 uitableviewcell 。我遇到的问题是 leftMenuCell 似乎是never等于 null,因此永远不会进入启动块。我究竟做错了什么?
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"LeftMenuCell";
MenuCell *leftMenuCell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if(leftMenuCell == nil) {
NSLog(@"creating a new cell");
leftMenuCell = [[MenuCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
} ....
您没有做错任何事情,这只是在故事板中创建单元格时表格视图的工作方式。当单元格位于 Storyboard 的表视图中时,方法 dequeueReusableCellWithIdentifier: 始终返回有效单元格。看来很多程序员还没有弄清楚这一点,仍然包含 if cell==nil 子句。这是来自文档:
“如果 dequeueReusableCellWithIdentifier: 方法请求故事板中定义的单元格,则该方法始终返回一个有效单元格。如果没有等待重用的回收单元格,则该方法使用故事板本身中的信息创建一个新单元格。这消除了检查返回值是否为 nil 并手动创建单元格的需要”
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)