ビュー間でデータを適切に渡すのに問題がありますが、標準的な方法ではありません。
私の問題を説明する画像:
私識別子付きセグエを実行する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
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...
}