我正在玩故事板,对于一个控制器,我设置了UITableView
,其中包含两个部分。在这两个部分中,我添加了几个静态单元格。
但是,根据代码路径,我想为我的两个部分显示不同的标题。
由于没有来源,也没有涉及委托,我该如何覆盖tableView:titleForHeaderInSection:
?
答案 0 :(得分:3)
使用静态表视图,您可以(并且必须)仍将数据源连接到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。如果您需要自己的内容,请使用与上述类似的代码。
答案 1 :(得分:0)
我对你的问题感到有点困惑,也许我需要更多的信息。你是说在故事板中你有一个视图控制器并将一个表视图对象拖到该视图控制器上?
如果是这种情况那么这个视图控制器仍然可以是该表视图的数据源和委托
你的.h文件中的: @interface VIEWCONTROLLERNAME:UIViewController< UITableViewDataSource,UITableViewDelegate>
在.m文件中,您需要为每个文件声明所需的方法: cellForRowAtIndexPath和numberOfRowsInSection(请参阅必需和可选消息的文档)以避免“不完整的实现错误”。这也是你可以覆盖titleForHeaderInSection的地方。
然后回到故事板中,您可以右键单击表视图并将数据源和委托选项拖到视图控制器中(或者在Connections Inspector选项卡中执行此操作)
如果这不是您的行为,请提供更多信息。