iOS故事板传递数据navigationViewController

sli*_*kas 31 cocoa-touch objective-c storyboard navigationcontroller ios

我在视图之间正确传递数据时遇到问题,但不是标准方式.

描述我的问题的图片:

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

performSegueWithIdentifier两个赛格瑞标识符中的一个,然后我想将数据传递给视图控制器称为"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];
  }
}
Run Code Online (Sandbox Code Playgroud)

问题是方法[segue destinationViewController]因为segue的destinationViewController是NavigationViewController.

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

Mar*_*ams 58

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...
}
Run Code Online (Sandbox Code Playgroud)