2015-09-08 2 views
5

У меня есть ViewController с Container View с встроенным TableViewController.ContainerView add outlet

Теперь я хотел бы получить доступ к TableView в ViewController, как я могу сделать выход для этого?

Я попытался добавить вид контейнера в виде розетки, но я не могу получить доступ к встроенному TableViewController.

enter image description here

ответ

11

Вы не можете сделать выход непосредственно, потому что представление таблицы находится в другой сцене (контроллер просмотра), но вы можете получить доступ к представлению таблицы, как только у вас есть ссылка на экземпляр UITableViewController. Есть несколько разных способов сделать это.

Прежде всего, вы можете использовать свойство childViewControllers вашего подкласса UIViewController. Если вы знаете, что есть только один ребенок, тогда вы можете получить к нему доступ напрямую, иначе вам нужно определить, какой из них является правильным, скажем, путем циклического перехода по массиву.

let myTableViewController = self.childViewControllers[0] as! UITableViewController 
let theTableView = myTableViewController.tableView 

Второй вариант доступа к UITableViewController во время встраивания Segue. Если вы нажмете на встроенный segue в своем раскадровке, вы можете дать ему идентификатор, как и в любом другом сегменте. Затем вы можете реализовать prepareForSegue и захватить встроенный UITableViewController экземпляр -

override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) { 
    if (segue.identifier == "tableviewEmbed") { 
     let myTableViewController = segue.destinationViewController as! UITableViewController 
     let theTableView = myTableViewController.tableView 
    } 
} 

Лично я предпочитаю этот второй подход, как я думаю, что это «чище»

+0

Второй подход породы! – TalL

1

Создать выход в детский View Controller и доступ к нему с помощью self.childViewControllers.lastObject (если у вас есть только один ребенок, в противном случае использовать objectAtIndex :)

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

  • Нет связанных вопросов^_^