如何将UITableView作为子视图添加到xib中的UIView?

时间:2017-01-23 18:31:10

标签: swift uitableview uiview xib subview

我有一个使用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)

我可以在自定义视图中看到绿色背景,但表格单元格未显示

no table cells! 我知道表的出口不是零,因为在调试时如果我使用控制台下方的table图标检查Quick Look变量,我可以看到该表。

更新

我意识到我的方法不是很好。

我通过将我的视图设为UITableViewDataSourceUITableViewDelegate的子视图并以编程方式创建UITable和必需的TableViewCell,实现了我想要的结果。疯狂的代码量!!

1 个答案:

答案 0 :(得分:1)

  

这里显示的UITableView出现在故事​​板上并与UITableViewController相关联。

在这种情况下,你所做的事情完全是非法的,这就是它无法正常工作的原因。您不能只是致电instantiateViewControllerWithIdentifier,抓住视图控制器的视图,并将该视图填充到addSubview的界面中。

毕竟,想一想:如果你这样做,视图控制器会发生什么??它已经不存在了,你的视图完全没有功能。

为了使TableController成为self子视图控制器,你需要做一个严格的舞蹈(当前的视图控制器 - 你不是在做舞蹈