1个ViewController中的2个UITableViews。设置代表& DataSource到不同的UITableViewController文件

时间:2011-12-29 19:03:30

标签: ios objective-c uitableview cocoa-touch uikit

所以我的ViewController中有两个UITableViews,如何设置委托&第二个数据源与另一个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"之类的事情吗?

对Objective C来说真的很新,

非常感谢,

塞米松

3 个答案:

答案 0 :(得分: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;
    }
}

答案 1 :(得分:2)

按照建议添加导入:

#import "AddMoreTableViewController.h"

确保创建它的实例,然后将 it 设置为其他表的委托/数据源。这是一个粗略的例子(我将把内存管理和语义留给你):

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

您必须确保在UITableViewDataSource中实施协议UITableViewDelegateAddmoreTableViewController

答案 2 :(得分:1)

或者你可以为这第二个tag&写一个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;
}