2015-09-08 15 views
5

私はViewControllerContainer Viewに埋め込み、TableViewControllerを埋め込んでいます。ContainerViewコンセントを追加

は、今私はViewControllerTableViewにアクセスしたいと思い、どのように私はそのための出口を作ることができますか?

コンテナビューをコンセントに追加しようとしましたが、埋め込みのTableViewControllerにアクセスできません。

enter image description here

答えて

11

をあなたがするので、直接コンセントをすることはできませんテーブルビューは別のシーン(ビューコントローラ)にありますが、UITableViewControllerインスタンスへの参照を取得すると、テーブルビューにアクセスできます。それにはいくつかの方法があります。

まず、UIViewControllerサブクラスのchildViewControllersプロパティを使用できます。子供が1人しかいないことがわかっている場合は、直接アクセスすることができます。そうでなければ、配列をループするなど、正しい子がどれかを判断する必要があります。

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

2番目のオプションは、埋め込みセグメント中にUITableViewControllerにアクセスすることです。ストーリーボードで埋め込みセグをクリックすると、他のセグのように識別子を付けることができます。そして、あなたがprepareForSegueを実装し、組み込みUITableViewControllerインスタンスをつかむことができます -

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

私はそれはきれい "

+0

第二のアプローチの岩だと思うように、私は、この第2のアプローチを好みます! – TalL

1

そうobjectAtIndexを使用し、あなただけの一人の子供を持っていると仮定すると(子ビューコントローラでアウトレットを作成し、self.childViewControllers.lastObjectを使用してアクセス:)

関連する問題