我一直面临着我无法回答的难题。在一个视图中配置多个UITableViews?
我正在创建一个在单个视图中有多个UITableView
的应用程序。每个TableView
将需要具有不同于另一个的属性。
UITableViewDelegate
方法提供通用方法来配置UITableView
s,但从我所看到的情况来看,这将影响View中的一个。
如果我需要控制每个单独的参数TableView
- 这将如何实现?
我一直面临着我无法回答的难题。在一个视图中配置多个UITableViews?
我正在创建一个在单个视图中有多个UITableView
的应用程序。每个TableView
将需要具有不同于另一个的属性。
UITableViewDelegate
方法提供通用方法来配置UITableView
s,但从我所看到的情况来看,这将影响View中的一个。
如果我需要控制每个单独的参数TableView
- 这将如何实现?
这是不正确的 - 你可以用UITableViewDelegate
配置所有的东西。例如:
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
您可以通过tableView
变量区分桌面浏览。为此,您需要存储对不同表格的引用(例如,通过属性)。现在
@property (nonatomic, strong) UITableView *myFirstTableView;
你可以做这样的事情:
if (tableView == self.myFirstTableView) {} else {}
每个的委托方法,它给你需要的信息,其实现代码如下。您可以使用它来标识哪个tableview实例请求数据。
使用标记区分表视图。
tableview1.tag = 100;
tableview2.tag = 200;
// ... so on - if using interface builder you can set tag in there too :)
现在在委托。
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
if (tableview.tag == 100)
{
// handle for tableview 1
}
else if (tableview.tag == 200)
{
// handle for tableview 2
}
}
所有的tableView委托方法都以tableView
作为参数开始。
例:- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
此传递的UITableView作为参数。因此,您可以添加switch-case或if语句来检查要修改数据的tableView。
而不是使用UIViewController作为您的tableView委托,您可以创建一个新的类充当tableView委托。然后该类可以包含正在处理的特定表所需的参数。
在视图控制器中,您可以为每个tableView分配一个此类的实例,并将其指定为委托。
谢谢大家的反馈和想法。已经整理好了。 – Fritzables 2013-04-25 23:22:40
不要将您的viewcontroller设置为委托和数据源,而应为每个tableview创建一个nsobject子类并进行设置。管理和维护会更容易。 – Desdenova 2013-04-25 08:21:12
重复:http://stackoverflow.com/q/1416372/1075405 – Groot 2013-04-25 08:22:53