我在同一个视图中有两个名为TableView1和TableView2的UITableView,我在填充它们时遇到了麻烦。我在其他SO问题中使用了一些建议,但我无法让它们工作(见下面的说明)。在我的代码中,我在相关的.m文件中设置了弱出口,如下所示:
@property (weak, nonatomic) IBOutlet UITableView *tableView1;
@property (weak, nonatomic) IBOutlet UITableView *tableView2;
然后,在numberOfSectionsInTableView
,NumberOfRowsInSection
,CellForRowAtIndexPath
和didSelectRowAtIndexPath
中,我输入了类似于以下内容的代码。值得注意的是tableView1是分组的,tableView2是普通的,因此还有其他与头相关的方法(对于tableView2)和tableView1的节标题的方法,我没有在这些检查中放入,因为它们只能被调用一个表视图。
- (UITableViewCell *)numberOfSectionsInTableView: (UITableView *)tableView {
if (tableView == self.tableView1) {
// stuff for tableView1;
} else {
// stuff for tableView2;
}
}
不幸的是,这给出了仅显示第二个表视图的结果。根据其他SO帖子,我也通过设置
尝试了标记方法- (void)viewDidLoad {
...
self.tableView1.tag = 33;
self.tableView2.tag = 34;
...
}
...和NSLog确认标签设置正确,我知道这些标签不会在故事板中的任何其他位置使用。用if (tableView == self.tableView1)
替换所有if (tableView.tag == 33)
项检查后,第一个表格视图在运行时仍未显示。我在numberOfSectionsInTableView
中记录了tableView的标记,发现tableView.tag
始终为34,即使我已将tableView1.tag
专门设置为33。
编辑:确保两个表视图的delegate
和dataSource
都已设置(感谢评论者)现在根据需要记录33和34的标签,但第一个表视图仍然没有出现。
是否有一个明显的原因我错过了为什么这两种方法都不起作用?或者是否有更有效的方法来实现这一点?谢谢!