2

Objective-cdelegates一次处理一个instance,就像我有两个view controllers并且都实现相同的委托,但仅当前呈现view controller接收回调。

如果我有两个uitableviews相同的view controller两个uitableview's delagates datasource都设置为

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

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

uitableview 如何与同时定义的代表一起工作?

4

2 回答 2

7

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

例如:

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

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

于 2013-11-11T10:03:26.357 回答
2

两个UITableViews中的意思是视图控制器中的UIViewController两个实例。因此,tableViews如果您正在设置两个 tableView 实例,则意味着您两个 tableView 都调用相同的和方法。现在,如果您想要 tableViews 的不同功能,您可以在 tableViews 上设置标签并在方法中检查该标签并根据该标签执行特定任务。dataSourcedelegatedelegatedataSource

于 2013-11-11T10:13:25.973 回答