vin*_*nce 16 cocoa-touch objective-c uitableview ios
我想知道,如果它允许使用多种UItableView同一视图(我没有看到任何东西苹果的人机界面指南),如果它的确定,如何加载不同DataSource在viewDidLoad每一个UITableView?
Chr*_*ian 20
你当然可以有多个表视图.您可能希望确保每个指针都有一个指针,然后在数据源方法中,您可以执行以下操作:
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
if(tableView == tableViewOne)
return 5;
else //if (tableView == tableViewTwo)
return 3;
}
Run Code Online (Sandbox Code Playgroud)
这对于所有委托/数据源方法都是相同的,这就是为什么它们为您提供哪个表视图作为参数.
是的你可以.问题是每个人UITableView都会使用相同的UITableViewDataSource和UITableViewDelegate.因此,您必须确定在每个必需的委托方法中使用哪个表视图.
例如:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
// make bigger rows
if (tableView == myBigRowTableView)
{
// make bigger rows
return 127;
} else if (tableView == mySmallRowTableView) {
// make smaller rows
return 20;
} else {
return 30;
}
}
Run Code Online (Sandbox Code Playgroud)
IMO最干净的解决方案是为每个tableview配备一个控制器.
如果你为n tableview使用一个控制器,你将不得不在许多地方使用if-statemenst
– numberOfSectionsInTableView:– tableView:numberOfRowsInSection:– tableView:titleForHeaderInSection:基本上,您需要实现的所有UITableViewDatasource-Protocol方法.
因此,如果您需要更改某些内容,则必须在许多地方进行更改.
如果您为一个tableview使用一个控制器类,则根本不需要检查.
UITableViewDatasource协议
– numberOfSectionsInTableView:,– tableView:numberOfRowsInSection:, – tableView:cellForRowAtIndexPath: -setDataSource:每个tableview 调用到右侧控制器类的对象我写了一个示例代码:https://github.com/vikingosegundo/my-programming-examples/tree/master/TwoTableViews
TwoTableViewsViewController.m
- (void)viewDidLoad {
[super viewDidLoad];
if (firstController == nil) {
firstController = [[FirstTVContoller alloc] init];
}
if (secondController == nil) {
secondController = [[SecondTVController alloc] init];
}
[firstTable setDataSource:firstController];
[secondTable setDataSource:secondController];
[firstTable setDelegate:firstController];
[secondTable setDelegate:secondController];
firstController.view = firstController.tableView;
secondController.view = secondController.tableView;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14701 次 |
| 最近记录: |