2017-01-19 4 views
0

データを渡してナビゲーションコントローラの外にあるコントローラを表示しますか?

上記の図に示されているように、私には2つのビューコントローラがあり、そのうちの1つはナビゲーションコントローラ内にあります。コントローラーAでボタンを押すと、コントローラーBがナビゲーションコントローラーを介して表示され、モーダル表示されます。 B上で切断機能が呼び出されたときに、コントローラBからコントローラAにデータを渡すことは可能ですか?

+0

モーダルセグエから指している必要があります:あなたは以下のように通知を掲示する必要があるのViewController Bで今

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(receiveTestNotification:) name:@"notificationName" object:nil]; -(void) receiveTestNotification:(NSNotification*)notification { NSDictionary* userInfo = notification.userInfo; NSLog (@"%@",userInfo); } 

まず、あなたは以下のように通知オブザーバーとViewControllerAでそのセレクタを追加する必要がありますあなたの説明を読んでいるナビゲーションコントローラにA –

答えて

0

は、あなたがストーリーボードを使用してseguesを使用してナビゲートしている場合は、この

+0

私は両方を試しましたが、ナビゲーションコントローラではなく、ビューコントローラBを提示する必要があります。 Bだけでなく、View Controller全体を表示したり解除したりできるようにする必要があるため、Navigation Controllerの代わりにBを表示することはできません。 – AlecR

+0

その場合、最も簡単な方法は 'unwind segue'を使用することです。 –

+0

代理を使用してください。たとえば、A: 'let navigationController = segue.destination as? UINavigationController、 let b = navigationController.viewControllers.first as? BViewController { b.delegate =自己 } '。 Bを閉じる前にデリゲートメソッドをデータで呼び出す –

0

を行うには、委任パターンやコールバックを使用することができ、その後、アンワインドセグエはあなたのためにこれを行います。ここで助けるべき簡単なチュートリアルです:

https://www.andrewcbancroft.com/2015/12/18/working-with-unwind-segues-programmatically-in-swift/

このスタックオーバーフローの答えはあなたがNSNotificationCentreを通過することができ、このトピック

Passing Data between View Controllers

0

に多くの、より詳細で貴重な情報を持っています。

NSDictionary* userInfo = your data ; 
NSNotificationCenter* nc = [NSNotificationCenter defaultCenter]; 
[nc postNotificationName:@"notificationName" object:self userInfo:userInfo]; 
関連する問題