Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

iOS storyboard passing data navigationViewController

I have problem with proper passing data between view's but not in standard way.

Picture describing my problem:

http://i.stack.imgur.com/0jHYC.png

I performSegueWithIdentifier with one of two segue identifiers and then in I want to pass data to ViewController called "Firmy" or "Oddzialy".

Passing data code:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {   if ([[segue identifier] isEqualToString:@"sLogowanieFirmy"]) {       FirmyVC *firmyVC = [segue destinationViewController];       firmyVC.tabFirmy = self.tabFirmy;   }   if ([[segue identifier] isEqualToString:@"sLogowanieOddzialy"]) {       OddzialyVC *oddzialyVC = [segue destinationViewController];       oddzialyVC.wybranaFirma = [self.tabFirmy objectAtIndex:0];   } } 

Problem is with method [segue destinationViewController] becouse destinationViewController for segue is NavigationViewController.

So what is proper way to pass data and have independent Navigation Controllers?

like image 486
sliwinski.lukas Avatar asked Dec 08 '11 09:12

sliwinski.lukas


People also ask

How do I pass value from one viewController to another in swift?

If you have a value in one view controller and want to pass it to another, there are two approaches: for passing data forward you should communicate using properties, and for passing data backwards you can either use a delegate or a block.


1 Answers

UINavigationController has a property called topViewController which returns the view controller that is at the top of the stack.

So your prepareForSegue: method may look something like this...

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {     if ([[segue identifier] isEqualToString:@"sLogowanieFirmy"]) {         UINavigationController *nav = [segue destinationViewController];         FirmyVC *firmyVC = (FirmyVC *)nav.topViewController;         firmyVC.tabFirmy = self.tabFirmy;     }      // etc... } 
like image 119
Mark Adams Avatar answered Sep 25 '22 02:09

Mark Adams