如何调用UItableview Delegate方法。当tableview在“for”循环中时?

时间:2013-03-20 12:13:17

标签: objective-c uitableview

//我正在 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个表中加载。不在所有表格中

3 个答案:

答案 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,尝试使用自定义单元格概念。每当你从一个桌面视图转到另一个桌面视图时重新加载你的桌子。

Custom cell tutorial.