我有一个自定义 UITableView 类,我在单个 ViewController 中有多个实例。用独特的单元格数据填充这些不同实例的最优雅的方法是什么?提前感谢您的帮助!
问问题
165 次
4 回答
1
现在我能想到两种可能的解决方案:
- 每个表都有不同的表视图数据源。如果这对您很重要,您可以在与视图控制器相同的文件中创建数据源。
- 让您的
tableView:cellForRowAtIndexPath:
方法根据表格有条件地加载单元格。您可以使用方法的第一个参数找出哪个表视图正在调用该方法。您还可以使用tag
UITableView 的属性进行区分。
我个人更喜欢第一个。
于 2013-10-29T19:22:10.257 回答
0
在您的控制器中,您应该将 tableViews 定义为属性
@property (nonatomic, strong) UITableView *myTableView
然后,tableView:cellForRowAtIndexPath:
您可以检查哪个表正在使用以下方法进行回调:
if (tableView == self.myTableView){
//return cell
} else if (tableView == someOtherTableView) {
//return some other cell
}
于 2013-10-29T19:26:52.163 回答
0
我在这里写的答案:
https://stackoverflow.com/a/19568737/480415
可以帮助您实现这一目标。:
您还可以在您的 UIViewController 上放置 2 个单独的 UITableView,然后在委托/数据源方法中处理它,即:
- (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;
}
于 2013-10-29T19:25:10.617 回答
0
请注意,方法签名tableView:cellForRowAtIndexPath:
包括对 tableView 的引用。您可以使用它来确定哪个 tableView 正在请求一个单元格,并相应地返回相同/不同的数据。
于 2013-10-29T19:20:10.460 回答