As shown in the picture above, I have two view controllers, one of which is within a navigation controller. When a button is pressed in controller A, controller B is presented through the navigation controller and is displayed modally. Is it possible for me to pass data from controller B back to controller A when the dismiss function is called on B?
Asked
Active
Viewed 167 times
1
-
Modal segue should be pointing from A to the navigation controller reading your description – Andrey Volobuev Jan 19 '17 at 01:07
3 Answers
0
You can use delegation pattern or callbacks to do this

Andrey Volobuev
- 862
- 8
- 11
-
I've tried both of those, but that would require me to present view controller B, not the navigation controller. Presenting B instead of the navigation controller doesn't work because I need to be able to present and dismiss the whole view controller, not just B. – AlecR Jan 19 '17 at 00:41
-
-
And you still can use the delegation, for example in A: `if let navigationController = segue.destination as? UINavigationController, let b = navigationController.viewControllers.first as? BViewController{ b.delegate = self }`. And calling delegate method with data before dismissing B – Andrey Volobuev Jan 19 '17 at 01:24
0
If you are using storyboards and navigating using segues, then an unwind segue will do this for you. Here is a simple tutorial that should help:
https://www.andrewcbancroft.com/2015/12/18/working-with-unwind-segues-programmatically-in-swift/
This stack overflow answer has much more detailed and valuable information on this topic

Community
- 1
- 1

Guillermo Alvarez
- 1,695
- 2
- 18
- 23
0
You can pass through NSNotificationCentre .
First you need to add Notification Observer and its selector in ViewControllerA as below :
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(receiveTestNotification:) name:@"notificationName"
object:nil];
-(void) receiveTestNotification:(NSNotification*)notification
{
NSDictionary* userInfo = notification.userInfo;
NSLog (@"%@",userInfo);
}
Now in ViewController B you need to post notification as below :
NSDictionary* userInfo = your data ;
NSNotificationCenter* nc = [NSNotificationCenter defaultCenter];
[nc postNotificationName:@"notificationName" object:self userInfo:userInfo];

KKRocks
- 8,222
- 1
- 18
- 84