0

私は、navigationController プロジェクト名:autoload を作成し、次の名前の 2 つの uiviewContorller を作成します: 2 番目、3 番目

私は、プロセスがメソッド「viewDidLoad」で2番目に読み込まれるrootViewをロードし、次にメソッド「viewdidload」で3つを自動ロードすることを望みます。コードは次のとおりです。

ルートビュー:

- (void)viewDidLoad {
    self.title = @"first";
    Second *second = [[Second alloc] init];
    AutoLoadAppDelegate *delegate = [[UIApplication sharedApplication] delegate];
    [delegate.navigationController pushViewController:second animated:YES];
    [super viewDidLoad];
}

2番目:

- (void)viewDidLoad {
    self.title = @"second";
    [super viewDidLoad];
}

プログラムをビルドして、タイトル コンテンツとナビゲーション ボタンを含む非常に正確な 2 番目に自動ロードできます

次に、2 番目に aotoload 3 が必要なので、2 番目のメソッド「viewdidload」にコードを追加します。

2番目:

- (void)viewDidLoad {
    self.title = @"second";
    **Three *three = [[Three alloc] init];
    AutoLoadAppDelegate *delegate = [[UIApplication sharedApplication] delegate];
    [delegate.navigationController pushViewController:three animated:YES];**
    [super viewDidLoad];
} 

最後にタイトルを 3 つに追加します。

三:

- (void)viewDidLoad {
    self.title = @"three";
    [super viewDidLoad];
}

次にビルドして実行すると、コンテンツは正しい「three」ですが、タイトルが「second」であることがわかります。「three」である必要があり、ナビゲーション ボタンも間違っていることがわかります。

オートロードのプログラムを 3 に実装するにはどうすればよいですか?

ノート:

私はそれを試してみます: 2番目にボタンを追加してコードを移動すると

Three *three = [[Three alloc] init];
    AutoLoadAppDelegate *delegate = [[UIApplication sharedApplication] delegate];
    [delegate.navigationController pushViewController:three animated:YES];

ibactionに、それは正しく動作しますが、自動的にロードしたいです

4

1 に答える 1

2

viewDidLoad メソッドで pushViewController を呼び出す代わりに、applicationDidFinishLaunching メソッドで viewControllers 配列を設定してみてください。

- (void)applicationDidFinishLaunching:(UIApplication *)application {    

    RootViewController *root = [[RootViewController alloc] init];
    root.title = @"root";
    Second *second = [[Second alloc] init];
    second.title = @"second";
    Three *three = [[Three alloc] init];
    three.title = @"three";
    [navigationController setViewControllers:[NSArray arrayWithObjects:root,second,three,nil] animated:YES];
    [root release];
    [second release];
    [three release];

    [window addSubview:[navigationController view]];
    [window makeKeyAndVisible];
}
于 2010-03-02T04:26:04.090 に答える