笔尖中的2个表视图

时间:2010-11-03 09:24:14

标签: objective-c ios cocoa-touch

我正在使用Xcode的SplitView模板。我已经将rootviewcontroller更改为UIViewController,并且我已经修改为NIB,因此它有一个tableview和一些其他控件。

我想在NIB中创建另一个tableview和搜索控件。这是可能的 - 你能在一个NIB中有2个tableview吗?

如果是,您将如何区分数据和委托方法?

3 个答案:

答案 0 :(得分:2)

标记之外的另一种方法是在FirstResponder中添加2个IBOutlet标记的tableView,并将其连接到InfterfaceBuilder中的相应表视图。

请参阅此代码:https://github.com/vikingosegundo/my-programming-examples/tree/master/VSCheckFavorites/

表格视图可以由Controller的成员解决,在Nib中称为FirstResponder

- (void)viewDidLoad {
    self.showTableController = [[ShowFavoritesTableController alloc] init];
    self.checkTableController= [[CheckTableController alloc] init];

    showTable.delegate = self.showTableController;
    showTable.dataSource=self.showTableController;

    checkTable.delegate = self.checkTableController;
    checkTable.dataSource=self.checkTableController;

    self.showTableController.tableView = showTable;
    self.checkTableController.tableView = checkTable;


    [super viewDidLoad];

}

Here I published a sample code,其中我展示了如何在父视图上保存两个Tableview,而每个视图都拥有自己的控制器

答案 1 :(得分:1)

We can have two table views in one NIB.

例如:您有2个表格视图


UITableView *tableView1;
UITableView *tableView2;

您可以使用以下示例代码;


-(NSInteger) numberOfSectionsInTableView:(UITableView *)tableView{
    if(tableView == tableView1)
        return 1;
    else if(tableView == tableView2)
        return 2;
}

-(NSString *) tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{
    if(tableView == tableView1)
        return @"Table View 1";
    else if(tableView == tableView2){
        if(section == 1)
        return @"section 1 in table view 2";
    else
        return @"section 2 in table view 2";
    }
}

-(NSInteger) tableView:(UITableView *)table numberOfRowsInSection:(NSInteger)section{
    if(tableView == tableView1)
        return 5;
    else if(tableView == tableView2){
    if(section == 0)
        return 3;
    else 
        return 4;
    }
}

-(UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    if(tableView == tableView1){
        .........
    }
    else if(tableView == tableView2){
        .........
    }
}

答案 2 :(得分:0)

您可以为每个tableView添加不同的标记,如下所示:

tabView1.tag = 100;
tabView2.tag = 200;

以及此委托方法中的例子:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if(tableView.tag==100)
    {
        // Return height of the first tabView
    }
    else
    {
        // Return height of the second tabView
    }
}