iOS Storyboard传递数据 navigationViewController

标签 ios objective-c cocoa-touch storyboard navigationcontroller

我在 View 之间正确传递数据时遇到问题,但不是以标准方式。

描述我的问题的图片:

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

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/

相关文章:

ios - 在 Swift 中,DateFormatter 对于没有时间的特定日期字符串返回 nil

ios - 如何防止 CABasicAnimation 缩放 UIView 中的所有内容?

ios - UISlider 无法正确处理 .touchUpInside 事件

ios - MKMapView 不响应触摸事件或手势识别器

ios - 在设备锁定时从通知打开应用程序

objective-c - Objective C 中的 CGContextFillPath 如何工作?

ios - 如何在 Firebase 中创建自动递增键?

ios - 使用自定义对象 ios 键入 Cast

ios - 如何混淆AudioSessionAddPropertyListener

objective-c - Objective C 中的对象分配和初始化