我有一个包含6个单元格和几个部分的静态表。当我初始化一个单元格时,它总是返回nil,尽管我在传递的过程中使用了完全相同的方法...
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
if (indexPath.section == SAVE_SECTION) {
ATSaveCell *cell = [tableView dequeueReusableCellWithIdentifier:@"SaveCell"];
if(cell == nil) {
NSLog(@"nil cell");
cell = [[ATSaveCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"SaveCell"];
}
cell.textLabel.text = @"test";
return cell;
}
零单元总是输出。在我的情节提要中,我有一个tableviewcontroller,它定义了单元格,id为“SaveCell”。我还检查了一下,以确保表ciew控制器与我正在使用的类是同一类...我在传递的过程中使用了完全相同的方法,因此我不确定为什么每次单元格都返回nil。
另外,要初始化我的tableviewcontroller:
ATSearchSettingsViewController *mySearchSettings = [sb instantiateViewControllerWithIdentifier:@"SearchSettings"];
很明显,表格视图没有在情节提要中注册原型单元。
最佳答案
如果问题在于UITableView不会从情节提要中将单元出队。尝试检查您使用的是prototype cells
而不是static cells
。 UITableView不会使静态单元出队。
如果问题是您始终在调用[[ATSaveCell alloc] init]
。如果没有任何重用,则表视图将需要。
从文档:dequeueReusableCellWithIdentifier
如果一个可用的单元格可用,则此方法使该单元出队或创建一个
使用您先前注册的class或nib文件的新文件。如果不
单元可供重用,并且您没有注册 class 或笔尖
文件,此方法返回nil。
因此,如果没有足够的单元格适合视图,它将始终创建一个新的单元格。
关于ios - dequeueReusableCellWithIdentifier始终返回nil,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23633626/