//我正在 for循环中创建tableview。循环一次后,tableview委托/数据源方法需要调用。但是这里的方法(委托/数据源)在完成循环后调用
// 注意:我将根据页面在scrollview中显示所有表格 控制器
//这是我的代码
for(int i=0; i < 10; i++)
{
table_obj[i] = [[UITableView alloc]initWithFrame:CGRectMake(0, 0, 700, 500)];
table_obj[i].separatorStyle = UITableViewCellSeparatorStyleNone;
table_obj[i].separatorColor = [UIColor clearColor];
table_obj[i].delegate = self;
table_obj[i].dataSource = self;
table_obj[i].backgroundColor = [UIColor clearColor];
[scrollview addSubview:table_obj[i]];
[table_obj[i] reloadData];
}
//数据仅在第10个表中加载。不在所有表格中
答案 0 :(得分:2)
我认为您应该使用tag(table_obj[i] = i
)来判断委托是由哪个tableView调用的。
例如:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
switch (tableView.tag) {
case 0:
//do something
break;
case 1:
//do something
break;
... ...
default:
break;
}
}
答案 1 :(得分:2)
这是因为当你将delegate / dataSource设置为self时,在循环中它会被覆盖并且将数组中的最后一个作为当前委托/ dataSource。
您可以在tableViews中设置'tags',然后在回调中根据tableView的标记进行操作。
另一种选择是循环使用tableViews数组来获取当前的数组,但这并不是非常有效,所以我相信第一个选项更好。
答案 2 :(得分:2)
如果你之后重新加载你的表,那么它应该可以正常工作。
我认为您正在添加的观点,而不是在您的(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
中添加
mehod,尝试使用自定义单元格概念。每当你从一个桌面视图转到另一个桌面视图时重新加载你的桌子。