iOS ストーリーボードでデータを渡す navigationViewController 質問する

iOS ストーリーボードでデータを渡す navigationViewController 質問する

ビュー間でデータを適切に渡すのに問題がありますが、標準的な方法ではありません。

私の問題を説明する画像:

https://i.sstatic.net/0jHYC.png

識別子付きセグエを実行する2 つの 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 であるためです。

では、データを渡し、独立したナビゲーション コントローラーを持つ適切な方法は何でしょうか?

ベストアンサー1

UINavigationControllertopViewControllerには、スタックの最上部にあるビュー コントローラーを返す というプロパティがあります。

したがって、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...
}

おすすめ記事