UITableView中的多个委托/数据源

时间:2013-11-11 09:59:13

标签: ios objective-c delegates

Objective-c delegates一次招待一个instance,就好像我有两个view controllers并且都实现相同的委托,但只有当前呈现view controller才能收到回调。< / p>

如果我在同一uitableviews中有两个view controller uitableview's delagates datasource设置为

tb1.datasource = self; 
tb2.datasource = self;

tb1.delegate = self; 
tb2.delegate = self;

uitableview如何与同时定义的代表合作?

2 个答案:

答案 0 :(得分:7)

您的委托/数据源方法将被调用两次,每个表一次,并且您可以检测从哪个表调用:

例如:

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    if (tableView == tb1)
        return 10;
    else if (tableView == tb2)
        return 8;
}

这就是调用者tableView作为方法中的变量传递的原因,因此您可以检测它的来源。

答案 1 :(得分:2)

UITableViews中的两个UIViewController表示视图控制器中的两个tableViews实例。因此,如果您要设置两个tableView实例的dataSourcedelegate,则表示您同时使用tableView调用相同的delegatedataSource方法。现在,如果您想要tableViews的不同功能,您可以在tableViews上设置标记,并在方法中检查该标记并根据该标记执行特定任务。