2

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

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

这些UITableViewDelegate方法提供了配置UITableViews 的通用方法,但据我所知,这将影响TableViews视图中的所有内容。

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

4

4 回答 4

3

这是不正确的 - 您可以使用UITableViewDelegate. 举个例子:

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

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

@property (nonatomic, strong) UITableView *myFirstTableView;

现在您可以执行以下操作:

if (tableView == self.myFirstTableView) {} else {}
于 2013-04-25T08:21:10.303 回答
0

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

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

于 2013-04-25T08:48:15.493 回答
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
}

}
于 2013-04-25T08:22:12.133 回答
0

您的所有 tableView 委托方法都以tableViewas 参数开头。

前任:- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

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

于 2013-04-25T08:22:41.293 回答