6

まず、ストーリーボードを使用して、 firstviewcontrollersecondviewcontrollerの 2 つの uiviewcontroller を作成します。そして、xcode を使用して uinavigationcontroller を secondviewcontroller に埋め込みます(エディター--> 埋め込み --> ナビゲーション コントローラー)。次に、セグエを使用して最初から2番目に値を渡したいと思います。コードがあります:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if([segue.identifier isEqualToString:@"passValue"])
    {
        secondViewController *saveViewController = [segue destinationViewController];
        [saveViewController setValue:data forKey:@"data"];
    }
}

ただし、エラーが報告されます。ログは次のとおりです: キャッチされていない例外 'NSUnknownKeyException' によるアプリの終了、理由: '[ setValue:forUndefinedKey:]: このクラスは、キー データのキー値コーディングに準拠していません。

しかし、Xcode を使用して挿入したナビゲーション コントローラーを削除し、コードでナビゲーション バーを定義すると、この問題はなくなります。その理由は、実際の destinationViewController がsecondviewcontrollerではなくnavigationcontrollerであるためだと思います。では、Xcode に組み込まれているナビゲーション コントローラーを予約したい場合、この問題を解決するにはどうすればよいでしょうか?

4

1 に答える 1

12

そうです、destinationViewControllerは、secondViewController が埋め込まれたUINavigationController になります

secondViewController *saveViewController = [[segue destinationViewController] topViewController];
于 2012-08-20T08:49:21.303 に答える