我有一个使用xib
文件构建的自定义视图。在此自定义视图中,有UIView
我想在其中添加静态UITableView
作为子视图。此处显示的UITableView
出现在storyboard
上,并与UITableViewController
相关联。我做了以下事情:
let vc = (UIStoryboard(name: "Main", bundle: nil))
.instantiateViewControllerWithIdentifier("tableController") as! TableController
vc.loadViewIfNeeded()
table = vc.table // this is an outlet, I'm sure it is not nil
table.delegate = vc
table.dataSource = vc
table.backgroundColor = UIColor.greenColor()
containerView.addSubview(table)
我可以在自定义视图中看到绿色背景,但表格单元格未显示
我知道表的出口不是零,因为在调试时如果我使用控制台下方的table
图标检查Quick Look
变量,我可以看到该表。
更新
我意识到我的方法不是很好。
我通过将我的视图设为UITableViewDataSource
和UITableViewDelegate
的子视图并以编程方式创建UITable
和必需的TableViewCell
,实现了我想要的结果。疯狂的代码量!!
答案 0 :(得分:1)
这里显示的UITableView出现在故事板上并与UITableViewController相关联。
在这种情况下,你所做的事情完全是非法的,这就是它无法正常工作的原因。您不能只是致电instantiateViewControllerWithIdentifier
,抓住视图控制器的视图,并将该视图填充到addSubview
的界面中。
毕竟,想一想:如果你这样做,视图控制器会发生什么??它已经不存在了,你的视图完全没有功能。
为了使TableController成为self
的子视图控制器,你需要做一个严格的舞蹈(当前的视图控制器 - 你不是在做舞蹈