一个UIView中的2个UITableViews

wou*_*_be 28 uitableview ios

我有一个UIView需要显示两个UITableViews,但它们永远不会一起显示,使用SegementedBar你可以切换一个或另一个.

处理这个问题的最佳方法是什么?只需创建一个Table View Controller并更改数据源,或创建2 Table View Controllers,只需在另一个可见时隐藏一个.

这两个表将具有完全不同的布局,具有不同的自定义单元格.

Dam*_*amo 48

我会保留一个数据源和委托.

这意味着所有委托/数据源方法变得更加复杂,但这意味着您可以保持viewController和view之间的一对一关系.

保持对每个表视图的引用

//vc.h
@property (nonatomic, weak) IBOutlet UITableView* firstTableView;
@property (nonatomic, weak) IBOutlet UITableView* secondTableView;
Run Code Online (Sandbox Code Playgroud)

在datasource/delegate方法中,您需要考虑该方法需要根据正在使用的表视图而表现不同的事实.例如

//vc.m
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    ...

    if (tableView == self.firstTableView) {

        ...

    } else { // tableView == self.secondTableView

        ...
    }
}

return cell;
Run Code Online (Sandbox Code Playgroud)

}


War*_*shi 6

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    ...

    if (tableView.tag == 1) {

        ...

    } else { // tableView == self.secondTableView

        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

tag可以从.xib中分配.所以不需要在.h文件中有UITableVeiw变量.需要.xib中的两个表视图