2011-12-29 60 views
1

所以我有两个UITableViews在我的ViewController中,我如何设置代理&数据源的第二个到另一个UITableViewController文件。2个ViewController中的2个UITableViews。将Delegate&DataSource设置为不同的UITableViewController文件

对于第二个,我目前正在创建它像这样

//now add our second tableview 
UITableView *addPapersTableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 320, 415)]; 

addPapersTableView.dataSource = self; 
addPapersTableView.delegate = self; 
[addPapersView addSubview:addPapersTableView]; 

而且由于self位,其明显的拉动数据,并从同一个文件被委派。 我会做点类似#import "AddMoreTableViewController.h"的东西吗?

真正的新目标C,

大为赞赏,

敏捷

回答

2

添加import如你所说:

#import "AddMoreTableViewController.h" 

确保创建它的一个实例,然后将设为作为其他表的代表/数据源。这里有一个粗略的例子(我会离开的内存管理和语义由你):

AddMoreTableViewController *controller = [AddMoreTableViewController alloc] init]; 
myOtherTableView.datasource = controller; 
myOtherTableView.delegate = controller; 

你必须确保你正在实现协议UITableViewDataSourceAddmoreTableViewControllerUITableViewDelegate

1

或者你可以在这一秒写 UITableView &在代表处处理不同表的方式根据它们的tag不同。

- (UITableViewCell *)tableView:(UITableView *)tableView 
     cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if(tableView.tag == 1) 
     //handle table 1 here. 
    else if(tableView.tag == 2) 
     //handle table 2 here. 
    return; 
} 
+0

优秀的,不知道这个!虽然Jeremy在这个例子中回答了我的问题,但我很感谢你的回答,并且看着'tag' :)谢谢! – DexCurl 2011-12-29 19:23:26

5

让你的生活变得复杂。

firstTableView.dataSource = self; 
firstTableView.delegate = self; 

secondTableView.dataSource = self; 
secondTableView.delegate = self; 

的的UITableViewDelegate和UITableViewDataSource协议的所有方法都有一个UITableView *参数,这样你就可以同时处理表视图。 例如:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { 
    if (tableView == firstTableView) { 
     return 1; 
    } 
    else { 
     return 4; 
    } 
} 
+0

同意,简化你的生活:) – Keller 2011-12-29 19:16:34

+0

双方同意,而杰里米在这种情况下回答我的问题,你的答案是伟大的!谢谢 :) – DexCurl 2011-12-29 19:22:16

相关问题