2016-04-28 7 views
0

UIViewController(splitviewcontrollerのdetailview)でUIButtonを押すと、UITableViewControllerがポップオーバーとして表示されます。これはセグによって達成され、kindは属性インスペクタで「Popover as Present Popover」として設定されます。 UITableViewControllerのUITableViewCellが選択されると、UIViewControllerがこの選択を取得します。ストーリーボードを使用して、迅速にPopoverから親ビューコントローラにアクセスする方法

これは私がのUITableViewControllerでやろうとしていますものです:

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 

     let cell = tableView.cellForRowAtIndexPath(indexPath) 
     let myViewController = presentingViewController as! MyViewController 

     myViewController.variable = cell.someProperty 
     self.dismissViewControllerAnimated(true, completion: nil) 
    } 

これは、ログになります:「致命的なエラー:予期せずnilをオプションの値をアンラップながら」、私はキャッチに失敗していることを示します親ビュー/プレゼンテーションビュー。 popoversについて読んだ後、私はデリゲートを実装し、メソッドを委譲する必要があると感じています。しかし、私はどのように未解決に失敗します。

これを行う正しい方法は何ですか?

+0

ちょうどこのように,,, MYViewController.Variable = cell.someProperty .. –

+0

あなたの提案に感謝しますが、動作しません。 –

答えて

1

おそらく、委譲デザインパターンを使用することをお勧めします。 myViewControllerDelegateの命名は、ように型UITableControllerDelegateであろうのUITableViewControllerがすでに持っているdelegate、と衝突しないよう

​​

注:私が正しくあなたの状況を理解していれば、あなたのような何かをすることによって、それを達成することができます。

この例では、ポイントを示しています。あなたはおそらくそれをクリーンアップするためにプロトコルを使用したいと思うでしょう。

+0

ありがとうございます。これはNSNotificationを使用するための非常に良い代用品のように思われ、私が持っている多くの問題を解決するかもしれません。しかし、私はそのプロパティをキャスティングできません。 func myTableViewController(viewController:MyTableViewController、didSelectCellWithPropertyプロパティ:Int){ // ... }内に "print(property)" print( "Hi")を追加すると、メソッドが呼び出されなかったようなものは表示されません。 –

+1

多分私は誤解しています..あなたはMyViewControllerにセルのプロパティを送信しようとしていますか? –

+0

はい、またはtableviewcontrollerのプロパティです。 –

関連する問題