我有一个自定义的UITableView类,我在一个ViewController中有多个实例。使用唯一单元格数据填充这些不同实例的最优雅方法是什么?感谢您提前提供任何帮助!
答案 0 :(得分:1)
现在我可以想到两种可能的解决方案:
tableView:cellForRowAtIndexPath:
方法根据表格有条件地加载单元格。您可以使用方法的第一个参数找出哪个表视图正在调用该方法。您还可以使用UITableView的tag
属性进行区分。我个人更喜欢第一个。
答案 1 :(得分:0)
请注意,方法签名tableView:cellForRowAtIndexPath:
包含对tableView的引用。您可以使用它来确定哪个tableView请求单元格,并相应地返回相同/不同的数据。
答案 2 :(得分:0)
我在这里写的答案:
https://stackoverflow.com/a/19568737/480415
可以帮助您实现这一目标。:
您还可以在UIViewController上放置2个单独的UITableViews, 然后在delegates / datasource方法中处理它,即:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
if(tableView == _leftTableView)
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
}
//fill cell data here
return cell;
}
else if(tableView == _rightTableView)
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
}
//fill cell data here
return cell;
}
return nil;
}
答案 3 :(得分:0)
@property (nonatomic, strong) UITableView *myTableView
然后,在tableView:cellForRowAtIndexPath:
中,您可以使用以下内容检查哪个表正在进行回调:
if (tableView == self.myTableView){
//return cell
} else if (tableView == someOtherTableView) {
//return some other cell
}