如何在屏幕上同时显示多个UITableViewControllers?我的桌子显示空白

时间:2013-04-30 03:47:10

标签: ios objective-c uitableview

我的目标是最终一次将多个UITableView添加到屏幕上,并允许用户像列一样在它们之间水平滚动。现在,为了显示我的tableviewcontroller,我将自定义控制器设置为根控制器:

[[self window] setRootViewController: myCustomController];

这适用于在屏幕上显示一个表格。但是,当我尝试将其更改为:

[self.window addSubview: myCustomController.view];

然后我可以看到我的桌子的背景,但它没有加载任何细胞。同样,如果我这样做:

[self.window addSubview: myCustomController.tableView];

然后它再次加载一个空白表:

enter image description here

我还尝试更改自定义控制器的标题以扩展UITableView而不是UITableViewController,但是当我尝试插入视图时会发生完全相同的事情,它只是一个空白表。

我尝试将NSLogs放在我的一些方法中,似乎没有直接插入控制器,这些方法似乎没有运行:

heightForRowAtIndexPath 的cellForRowAtIndexPath numberOfRowsInSection

我想要做的就是弄清楚如何在屏幕上插入自定义UITableViewController的多个不同实例,以便我可以使用以下任何一个:

https://github.com/alekseyn/EasyTableView https://github.com/TheVole/HorizontalTable

将它们并排放置并显示来自不同数据存储的信息。

2 个答案:

答案 0 :(得分:0)

您的问题是您没有为表格视图设置delegatedatasource

您可以在代码中执行此操作:

//assuming outlet named tableView
self.tableView.delegate = self;
self.tableView.dataSource = self;

此外,您还需要修改相应的.h文件:

@interface something : somethingElse <UITableViewDelegate, UITableViewDataSource>
....

如果您要通过IB创建表格视图,请对.h文件进行相同的更改,而是右键单击从表格视图拖动到“场景”底部的小橙色圆圈。你需要两次这样做;一次用于dataSource,另一次用于delegate

答案 1 :(得分:0)

您必须先设置表视图数据源和委托,然后才能加载其中的任何数据。

self.yourtableview.delegate = self; self.yourtableview.datasouce = self;

如果你不这样做,你的tableview将无法知道代码中实现其实例方法的位置,也无法向他们发送调用。

现在关于你的重绘问题,直到你没有点击屏幕。试着打电话 [self.yourtableview reloadData] 你在哪里设置了yourtableview的数据源和委托。此外,如果您更改tableview的内容,使它们出现在您的视图中。您将不得不再次调用reloadData实例方法。