我遇到了一个我无法回答的谜题。
我正在一个视图中创建一个多个UITableView
的应用。每个TableView
都需要具有不同的属性。
UITableViewDelegate
方法提供了配置UITableView
的通用方法,但从我看到的情况来看,这将影响视图中的{L} TableViews
。
如果我需要控制每个TableView
的参数 - 这将如何实现?
答案 0 :(得分:3)
这不正确 - 您可以使用UITableViewDelegate
配置所有内容。举个例子:
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
您可以通过tableView
变量区分表格视图。为此,您需要存储对不同tableviews的引用(例如,通过属性)。
@property (nonatomic, strong) UITableView *myFirstTableView;
现在你可以这样做:
if (tableView == self.myFirstTableView) {} else {}
答案 1 :(得分:0)
对于每个委托方法,它为您提供需要信息的tableview。您可以使用它来识别请求数据的tableview的哪个实例..
使用标记来区分表格视图。
tableview1.tag = 100;
tableview2.tag = 200;
// ... so on - if using interface builder you can set tag in there too :)
现在在代表中。
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
if (tableview.tag == 100)
{
// handle for tableview 1
}
else if (tableview.tag == 200)
{
// handle for tableview 2
}
}
答案 2 :(得分:0)
所有tableView委托方法都以tableView
作为参数开始。
例如:- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
这会将UITableView作为参数传递。因此,您可以添加switch-case或if语句来检查要修改数据的tableView。
答案 3 :(得分:0)
您可以创建一个新类来充当tableView委托,而不是使用UIViewController作为tableView委托。然后,该类可以包含它正在处理的特定表所需的参数。
在视图控制器中,您可以为每个tableView分配此类的一个实例,并将其指定为委托。