我正在尝试在分组表视图中混合动态和静态单元格:我想得到两个部分,顶部是静态单元格,然后是一部分动态单元格(请参阅下面的屏幕截图)。我已将表格视图内容设置为静态单元格。
编辑
根据 AppleFreak 的建议,我将代码更改如下:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell;
if (indexPath.section <= 1) { // section <= 1 indicates static cells
cell = [super tableView:tableView cellForRowAtIndexPath:indexPath];
} else { // section > 1 indicates dynamic cells
CellIdentifier = [NSString stringWithFormat:@"section%idynamic",indexPath.section];
cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
}
return cell;
}
但是,我的应用程序崩溃并显示错误消息
由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“UITableView 数据源必须从 tableView 返回一个单元格:cellForRowAtIndexPath:”
对于第 0 节和第 0 行。从cell = [super tableView:tableView cellForRowAtIndexPath:indexPath]
第 0 节和第 0 行返回的单元格是nil
。
我的代码有什么问题?我的网点有什么问题吗?我没有设置任何出口,因为我是子类UITableViewController
化并且据说没有设置任何用于设置 tableview 的出口(?)。关于如何更好地做到这一点的任何建议?
编辑二
我在情节提要中重新创建了我的场景(请参阅上面更新的屏幕截图)并重写了视图控制器,以便从新的基础开始。我还按照 applefreak 的建议阅读了 Apple 论坛中的描述。然而,我遇到了我的第一个问题numberOfSectionsInTableView:tableView
,其中我将静态部分的数量(两个)增加了一个。
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return [super numberOfSectionsInTableView:tableView] + 1 ; }
该应用程序因错误消息而崩溃:
由于未捕获的异常“NSRangeException”而终止应用程序,原因:“*** -[__NSArrayI objectAtIndex:]: index 2 beyond bounds [0 .. 1]”
即使我遵循了 Apple 和 applefreak 的建议,为什么这段代码对我不起作用?在 iOS 6 中 tableView 可能发生了一些变化?
解决方案:我现在在他的回答中使用 AppleFreaks 代码示例让这个工作。谢谢你,AppleFreak!
编辑 III:单元格选择:
如何在混合(动态和静态单元格)单元格表视图中处理单元格选择?我什么时候打电话super
,什么时候打电话self tableView
?当我使用
[[super tableView] selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionNone]
并尝试检查选定的索引路径:
UITableView *tableView = [super tableView];
if ( [[tableView indexPathForSelectedRow] isEqual:customGrowthIndexPath] ) { .. }
我得到一个返回值nil
。
由于我找不到错误的来源,非常感谢您的帮助