2017-01-23 132 views
0

我有一个使用xib文件构建的自定义视图。在这个自定义视图中,有一个UIView,我想在其中添加一个静态的UITableView作为子视图。此处显示的UITableView出现在storyboard中,并与UITableViewController相关联。我做了以下内容:如何将UITableView作为子视图添加到xib中的UIView?

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! 表格单元格我知道插座表不为零,因为如果在调试时我使用控制台下方的Quick Look图标检查table变量,我可以看到表格。

UPDATE

我意识到自己的做法是不是一个好一个。

我实现我希望通过我做的查看和UITableViewDataSource一个UITableViewDelegate子视图和编程方式创建一个UITable和所需TableViewCell结果。疯狂的代码量!

回答

1

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

在这种情况下,您所做的是完全非法的,这就是为什么它不起作用。您不能只调用instantiateViewControllerWithIdentifier,抓住视图控制器的视图,并将该视图填入与addSubview的接口。

毕竟,想一想:如果你这样做,发生什么事情的视图控制器?它不存在,而你有一个完全没有功能的观点。

还有就是你需要为了使TableController一个子视图控制器的self(当前视图控制器做了严格的舞蹈 - 和你没有做舞蹈

+0

有关的细节跳舞,看到我的答案在这里:http://stackoverflow.com/a/8746580/341994这是在2012年,但规则并没有改变,按照他们 - 在这里它是在现代Swift:https: //github.com/mattneub/Programming-iOS-Book-Examples/blob/master/bk2ch06p316containerController/ch19p631containerController/ViewController.swift – matt

+0

有没有其他办法可以访问那个UITableView?我在xib文件中找不到容器视图所以我不得不诉诸这个马dness。正如你所看到的,我非常渴望完成这件事。 – JadeSync

+0

我不知道你的意思是“任何其他方式”。我所建议的很容易。我向你展示了代码。为什么不这样做呢?您只需添加几行代码即可。 – matt

相关问题