我有一个包含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的单元格。 / p>
另外,初始化我的tableviewcontroller:
ATSearchSettingsViewController *mySearchSettings = [sb instantiateViewControllerWithIdentifier:@"SearchSettings"];
很明显,表视图没有在故事板中注册原型单元格。
答案 0 :(得分:4)
如果问题是UITableView没有从故事板中出列单元格。请尝试检查您使用的是prototype cells
而不是static cells
。 UITableView不会使静态单元格出列。
如果问题是你总是打电话给[[ATSaveCell alloc] init]
。如果表格视图没有重复使用,则需要表格视图。
来自文档: dequeueReusableCellWithIdentifier
如果现有单元格可用或创建现有单元格,则此方法会出现 使用您之前注册的类或nib文件的新文件。如果不 单元格可以重复使用,而您没有注册类或笔尖 file,此方法返回nil。
因此,如果没有足够的单元格来适应视图,它将始终创建一个新的单元格。