2

StoryBoard を使用してビューコントローラーを表示する新しい方法。

    UIStoryboard* secondStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];

UINavigationController* secondViewController = [secondStoryboard instantiateViewControllerWithIdentifier:@"Connect"];

[self presentViewController: secondViewController animated:YES completion: NULL];

コントローラーConnectの従来の提示方法はこんな感じ

  Connect *connect = [[[Connect alloc] initWithNibName:@"Connect" bundle:nil] autorelease]; 

[self presentViewController:connect animated:YES completion:NULL];
 NSString *userid;
 userid=@"123";

 [connect setID:userid];

ストーリーボードの方法で接続コントローラーの setID 関数を呼び出したいのですが、どうすればよいですか? Connect コントローラーのインスタンスを直接取得していないようです。

4

2 に答える 2

1

ビュー コントローラーをサブクラス化して、ユーザーが操作したときに何が起こるかを制御できるようにする必要があります (アプリがセグエのみで機能する場合を除きます)。

Xcode では、File -> New -> File -> Cocoa Touch Class を実行します。そのサブクラスのようなクラスをMyAwesomeViewController作成します(あなたの場合)UINavigationController

NewVCカスタム ビュー コントローラー クラスで呼び出されるカスタム メソッドを作成するのが好きです。上記のすべてに加えて、カスタムセットアップを実行できます。

+(MyAwesomeViewController *)NewVC {
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName: @"MyStoryboard" bundle: nil];
    return [storyboard instantiateViewControllerWithIdentifier: @"MyAwesomeViewController"];
}

このようにして、新しいものを作成したいときに呼び出すだけ[MyAwesomeViewController NewVC]で、新しいView Controllerインスタンスが返されます。

于 2012-07-01T04:49:28.413 に答える
0

なぜそれをUINavigationControllerとしてキャストするのですか?あなたがしていたことをするだけです。

Connect* connect = [secondStoryboard instantiateViewControllerWithIdentifier:@"Connect"];
于 2012-07-01T04:29:34.090 に答える