iOS故事板传递数据navigationViewController

我在视图之间正确的传递数据有问题,但没有标准的方式。

描述我的问题的图片:

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

我使用两个segue标识符之一执行SegueWithIdentifier,然后我想将数据传递给ViewController,名为“Firmy”或“Oddzialy”。

通过数据代码:

- (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]; } } 

问题是用方法[segue destinationViewController] becouse destinationViewController for segue是NavigationViewController。

那么传递数据和独立导航控制器的正确方法是什么?

UINavigationController有一个名为topViewController的属性,它返回位于堆栈顶部的视图控制器。

所以你的prepareForSegue:方法可能看起来像这样…

 - (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... } 

这里很快:

 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... }