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如何与同时定义的代表合作?
答案 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实例的dataSource
和delegate
,则表示您同时使用tableView调用相同的delegate
和dataSource
方法。现在,如果您想要tableViews的不同功能,您可以在tableViews上设置标记,并在方法中检查该标记并根据该标记执行特定任务。