4

// 我在for 循环中创建表视图。循环一次后,需要调用 tableview 委托/数据源方法。但是这里的方法(委托/数据源)在完成循环后调用

//注意:我在基于页面控制器的滚动视图中显示所有表格

// 这是我的代码

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 个表中加载。并非在所有表格中

4

3 回答 3

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;
    }
}
于 2013-03-20T12:22:48.033 回答
2

那是因为当您将委托/数据源设置为 self 时,在循环中它会被覆盖,并将数组中的最后一个作为当前委托/数据源。

您可以在 tableViews 中设置“标签”,然后在回调中根据 tableView 的标签进行操作。

另一种选择是循环遍历 tableViews 数组以获取当前的,但这不是很有效,所以我相信第一种选择更好。

于 2013-03-20T12:23:13.767 回答
2

如果您在那之后重新加载表,那么它应该可以正常工作。

我认为您在其中添加的视图,而不是在您的方法中添加该视图,请(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 尝试使用自定义单元格概念。并在您从一个表格视图转到另一个表格视图时重新加载您的表格。

自定义单元教程。

于 2013-03-21T07:14:31.880 回答