我遇到了一个我无法回答的难题。
我正在创建一个UITableView
在单个视图中有多个的应用程序。每个TableView
都需要具有彼此不同的属性。
这些UITableViewDelegate
方法提供了配置UITableView
s 的通用方法,但据我所知,这将影响TableViews
视图中的所有内容。
如果我需要控制每个单曲的参数TableView
- 这将如何实现?
我遇到了一个我无法回答的难题。
我正在创建一个UITableView
在单个视图中有多个的应用程序。每个TableView
都需要具有彼此不同的属性。
这些UITableViewDelegate
方法提供了配置UITableView
s 的通用方法,但据我所知,这将影响TableViews
视图中的所有内容。
如果我需要控制每个单曲的参数TableView
- 这将如何实现?
这是不正确的 - 您可以使用UITableViewDelegate
. 举个例子:
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
tableView
您可以通过变量区分表格视图。为此,您需要存储对不同表视图的引用(例如,通过属性)。
@property (nonatomic, strong) UITableView *myFirstTableView;
现在您可以执行以下操作:
if (tableView == self.myFirstTableView) {} else {}
您可以创建一个新类来充当 tableView 委托,而不是使用 UIViewController 作为您的 tableView 委托。然后,此类可以包含它正在处理的特定表所需的参数。
在视图控制器内部,您可以为每个 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
}
}
您的所有 tableView 委托方法都以tableView
as 参数开头。
前任:- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
这会将 UITableView 作为参数传递。因此,您可以添加 switch-case 或 if 语句来检查您要修改哪个 tableView 数据。