我的目标是最终一次将多个UITableView添加到屏幕上,并允许用户像列一样在它们之间水平滚动。现在,为了显示我的tableviewcontroller,我将自定义控制器设置为根控制器:
[[self window] setRootViewController: myCustomController];
这适用于在屏幕上显示一个表格。但是,当我尝试将其更改为:
[self.window addSubview: myCustomController.view];
然后我可以看到我的桌子的背景,但它没有加载任何细胞。同样,如果我这样做:
[self.window addSubview: myCustomController.tableView];
然后它再次加载一个空白表:
我还尝试更改自定义控制器的标题以扩展UITableView而不是UITableViewController,但是当我尝试插入视图时会发生完全相同的事情,它只是一个空白表。
我尝试将NSLogs放在我的一些方法中,似乎没有直接插入控制器,这些方法似乎没有运行:
heightForRowAtIndexPath 的cellForRowAtIndexPath numberOfRowsInSection
我想要做的就是弄清楚如何在屏幕上插入自定义UITableViewController的多个不同实例,以便我可以使用以下任何一个:
https://github.com/alekseyn/EasyTableView https://github.com/TheVole/HorizontalTable
将它们并排放置并显示来自不同数据存储的信息。
答案 0 :(得分:0)
您的问题是您没有为表格视图设置delegate
和datasource
。
您可以在代码中执行此操作:
//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实例方法。