我在 View 之间正确传递数据时遇到问题,但不是以标准方式。
描述我的问题的图片:
我 performSegueWithIdentifier 使用两个 segue 标识符之一,然后我想将数据传递给名为“Firmy”或“Oddzialy”的 ViewController。
传递数据代码:
- (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] 因为segue 的destinationViewController 是NavigationViewController。
那么传递数据和拥有独立导航 Controller 的正确方法是什么?
最佳答案
UINavigationController
有一个名为 topViewController
的属性,它返回位于堆栈顶部的 View Controller 。
因此您的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...
}
关于iOS Storyboard传递数据 navigationViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8429088/