データを渡してナビゲーションコントローラの外にあるコントローラを表示しますか?
上記の図に示されているように、私には2つのビューコントローラがあり、そのうちの1つはナビゲーションコントローラ内にあります。コントローラーAでボタンを押すと、コントローラーBがナビゲーションコントローラーを介して表示され、モーダル表示されます。 B上で切断機能が呼び出されたときに、コントローラBからコントローラAにデータを渡すことは可能ですか?
データを渡してナビゲーションコントローラの外にあるコントローラを表示しますか?
上記の図に示されているように、私には2つのビューコントローラがあり、そのうちの1つはナビゲーションコントローラ内にあります。コントローラーAでボタンを押すと、コントローラーBがナビゲーションコントローラーを介して表示され、モーダル表示されます。 B上で切断機能が呼び出されたときに、コントローラBからコントローラAにデータを渡すことは可能ですか?
は、あなたがストーリーボードを使用してseguesを使用してナビゲートしている場合は、この
私は両方を試しましたが、ナビゲーションコントローラではなく、ビューコントローラBを提示する必要があります。 Bだけでなく、View Controller全体を表示したり解除したりできるようにする必要があるため、Navigation Controllerの代わりにBを表示することはできません。 – AlecR
その場合、最も簡単な方法は 'unwind segue'を使用することです。 –
代理を使用してください。たとえば、A: 'let navigationController = segue.destination as? UINavigationController、 let b = navigationController.viewControllers.first as? BViewController { b.delegate =自己 } '。 Bを閉じる前にデリゲートメソッドをデータで呼び出す –
を行うには、委任パターンやコールバックを使用することができ、その後、アンワインドセグエはあなたのためにこれを行います。ここで助けるべき簡単なチュートリアルです:
https://www.andrewcbancroft.com/2015/12/18/working-with-unwind-segues-programmatically-in-swift/
このスタックオーバーフローの答えはあなたがNSNotificationCentreを通過することができ、このトピック
に多くの、より詳細で貴重な情報を持っています。
はNSDictionary* userInfo = your data ;
NSNotificationCenter* nc = [NSNotificationCenter defaultCenter];
[nc postNotificationName:@"notificationName" object:self userInfo:userInfo];
モーダルセグエから指している必要があります:あなたは以下のように通知を掲示する必要があるのViewController Bで今
:
まず、あなたは以下のように通知オブザーバーとViewControllerAでそのセレクタを追加する必要がありますあなたの説明を読んでいるナビゲーションコントローラにA –