2017-01-23 4 views
0

У меня есть пользовательский вид, который я создал с помощью файла xib. В этом пользовательском представлении есть UIView, где я хотел бы добавить статический UITableView в качестве подзаголовка. UITableView, который будет показан здесь, присутствует на storyboard и связан с UITableViewController. Я сделал следующее:Как добавить UITableView в качестве подзаголовка в UIView в xib?

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 ниже консоли, я вижу таблицу.

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

Смежные вопросы