iOS storyboard passing data navigationViewController
11,514
Solution 1
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...
}
Solution 2
Here it is in swift:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)
{
if (segue.identifier == "sLogowanieFirmy") {
let nav = segue.destinationViewController as! UINavigationController
let firmyVC = nav.topViewController as! FirmyVC
firmyVC.tabFirmy = self.tabFirmy
}
// etc...
}
Author by
sliwinski.lukas
Updated on June 10, 2022Comments
-
sliwinski.lukas about 2 years
I have problem with proper passing data between view's but not in standard way.
Picture describing my problem:
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?