在一个视图中配置多个UITableView?

时间:2013-04-25 08:16:26

标签: objective-c xcode uitableview

我遇到了一个我无法回答的谜题。

我正在一个视图中创建一个多个UITableView的应用。每个TableView都需要具有不同的属性。

UITableViewDelegate方法提供了配置UITableView的通用方法,但从我看到的情况来看,这将影响视图中的{L} TableViews

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

4 个答案:

答案 0 :(得分:3)

这不正确 - 您可以使用UITableViewDelegate配置所有内容。举个例子:

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

您可以通过tableView变量区分表格视图。为此,您需要存储对不同tableviews的引用(例如,通过属性)。

@property (nonatomic, strong) UITableView *myFirstTableView;

现在你可以这样做:

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

答案 1 :(得分:0)

对于每个委托方法,它为您提供需要信息的tableview。您可以使用它来识别请求数据的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
}

}

答案 2 :(得分:0)

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

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

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

答案 3 :(得分:0)

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

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