2013-04-25 47 views
2

我一直面临着我无法回答的难题。在一个视图中配置多个UITableViews?

我正在创建一个在单个视图中有多个UITableView的应用程序。每个TableView将需要具有不同于另一个的属性。

UITableViewDelegate方法提供通用方法来配置UITableView s,但从我所看到的情况来看,这将影响View中的一个。

如果我需要控制每个单独的参数TableView - 这将如何实现?

+0

不要将您的viewcontroller设置为委托和数据源,而应为每个tableview创建一个nsobject子类并进行设置。管理和维护会更容易。 – Desdenova 2013-04-25 08:21:12

+0

重复:http://stackoverflow.com/q/1416372/1075405 – Groot 2013-04-25 08:22:53

回答

3

这是不正确的 - 你可以用UITableViewDelegate配置所有的东西。例如:

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 

您可以通过tableView变量区分桌面浏览。为此,您需要存储对不同表格的引用(例如,通过属性)。现在

@property (nonatomic, strong) UITableView *myFirstTableView; 

你可以做这样的事情:

if (tableView == self.myFirstTableView) {} else {} 
0

每个的委托方法,它给你需要的信息,其实现代码如下。您可以使用它来标识哪个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 
} 

} 
0

所有的tableView委托方法都以tableView作为参数开始。

例:- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

此传递的UITableView作为参数。因此,您可以添加switch-case或if语句来检查要修改数据的tableView。

0

而不是使用UIViewController作为您的tableView委托,您可以创建一个新的类充当tableView委托。然后该类可以包含正在处理的特定表所需的参数。

在视图控制器中,您可以为每个tableView分配一个此类的实例,并将其指定为委托。

+0

谢谢大家的反馈和想法。已经整理好了。 – Fritzables 2013-04-25 23:22:40

相关问题