有谁知道在一个viewController中管理多个tableView的简单方法? 到目前为止,我一直在这样做:
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
if(tableView == self.tableView1)
return 1;
else if(tableView == self.tableView2)
return 2;
}
-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
if(tableView == self.tableView1)
return @"bla";
else if(tableView == self.tableView2)
return @"blabla";
}
-(NSString *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
if(tableView == self.tableView1)
...
else if(tableView == self.tableView2)
...
}
我发现我必须为每个单一委托方法使用if / else语句真的很烦人。另外,当有很多tableView时,它真的很难读。此外,我对NSURLConnection等有同样的问题......只要有几个对象响应同一个委托协议,事情就会变得混乱。
让事情变得简单的最佳方法是什么? 感谢
答案 0 :(得分:6)
您可以为表视图使用选择器和某种标识符(例如UIView
标记)。像这样:
-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
return [self performSelector:NSSelectorFromString([NSString stringWithFormat:@"tableView%d:titleForHeaderInSection:", tableView.tag])];
}
当然,您需要为每个表视图使用一种方法。假设您的两个表格包含标签100和101,那么您将拥有tableView100:titleForHeaderInSection
和tableView101:titleForHeaderInSection
。
答案 1 :(得分:6)
我经常使用的一种方法是实际让两个UITableView
的委托和数据源是不同的对象。这样,您的视图控制器就不必来回切换,并且您的代码整体更清晰,更简单。