在同一视图中获取多个UITableView

时间:2016-07-15 16:41:07

标签: objective-c uitableview

我在同一个视图中有两个名为TableView1和TableView2的UITableView,我在填充它们时遇到了麻烦。我在其他SO问题中使用了一些建议,但我无法让它们工作(见下面的说明)。在我的代码中,我在相关的.m文件中设置了弱出口,如下所示:

@property (weak, nonatomic) IBOutlet UITableView *tableView1;
@property (weak, nonatomic) IBOutlet UITableView *tableView2;

然后,在numberOfSectionsInTableViewNumberOfRowsInSectionCellForRowAtIndexPathdidSelectRowAtIndexPath中,我输入了类似于以下内容的代码。值得注意的是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。

编辑:确保两个表视图的delegatedataSource都已设置(感谢评论者)现在根据需要记录33和34的标签,但第一个表视图仍然没有出现。

是否有一个明显的原因我错过了为什么这两种方法都不起作用?或者是否有更有效的方法来实现这一点?谢谢!

0 个答案:

没有答案