iOS故事板传递数据navigationViewController
我在视图之间正确的传递数据有问题,但没有标准的方式。
描述我的问题的图片:
我使用两个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... }