我正在玩故事板,对于一个控制器,我设置了一个UITableView
由两个部分组成的控制器。在这两个部分中,我都添加了几个静态单元格。但是,根据代码路径,我想为我的两个部分显示不同的标题。由于没有来源和代表,我应该如何覆盖tableView:titleForHeaderInSection:
?
2 回答
使用静态表视图,您仍然可以(并且必须)将数据源连接到 UITableViewController。关键是,如果您实现数据源方法,那么这将覆盖您在表格视图中设置的静态内容。您可以毫无问题地覆盖 titleForHeader,因为这是您想要做的。
-(NSString*)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
if (section == 0)
return @"HELLO!";
else {
return [super tableView:tableView titleForHeaderInSection:section];
}
}
将静态表中第 0 部分的标题设置为 HELLO!,覆盖在 xib 中设置的标题。其他的则保留在 xib 中。
关键是静态表的填充方式与动态表完全相同,只是 UITableViewController 实现了所有数据源方法的自己的版本。这些方法大概会从 xib 文件中读取信息并将适当的信息发送回表视图。如果您想要静态内容,请不要实现或调用 super。如果您想要自己的内容,请使用与上述类似的代码。
我对你的问题有点困惑,也许我需要更多信息。你是说在情节提要中有一个视图控制器并将一个表格视图对象拖到该视图控制器上吗?
如果是这样的话,那么这个视图控制器仍然可以成为那个表视图的数据源和委托
在您的 .h 文件中:@interface VIEWCONTROLLERNAME: UIViewController < UITableViewDataSource, UITableViewDelegate>
在您的 .m 文件中,您需要为每个方法声明所需的方法:cellForRowAtIndexPath 和 numberOfRowsInSection(有关必需和可选消息,请参阅文档)以避免“不完整的实现错误”。这也是您可以覆盖 titleForHeaderInSection 的地方。
然后回到情节提要中,您可以右键单击表格视图并将数据源和委托选项拖到您的视图控制器(或在 Connections Inspector 选项卡中执行此操作)
如果这不是您所做的,请提供更多信息。