0

アプリケーションで 1 つのナビゲーション コントローラーを使用しています。1 つのメイン ビュー (メイン ビュー コントローラーを使用) といくつかのオプション ビューがあります。オプション ビューは、メイン ビューのツールバーのボタンをクリックすると、ナビゲーション コントローラーによって表示されます。

すべてが初めて期待どおりに機能します。ナビゲーション コントローラーからメイン ビューに戻り、オプション ビュー (つまり、ナビゲーション コントローラー) に移動しようとすると、アプリケーションがクラッシュします。

以下は私のコードです、

//Jump to navigation controller from main view controller

optionsViewController *optionsView = [[optionsViewController alloc] initWithNibName:@"optionsView" bundle:nil];
navControllerSettings = [[UINavigationController alloc] initWithRootViewController:(UIViewController *) optionsView];
[self presentModalViewController:self.navControllerSettings animated:YES];

//Code to go back to main view from navigation controller

[self.navigationController dismissModalViewControllerAnimated:YES];

ナビゲーションコントローラーを処理する正しいメカニズムは何ですか? ナビゲーション コントローラーまたはオプション ビューを解放/割り当て解除する必要がありますか?

サンプル コードが役立ちます。

4

3 に答える 3

0

ナビゲーション コントローラーは 1 回だけセットアップされ、スタックから他のビューをプッシュおよびポップします。

UINavigationController *navController = [[UINavigationController alloc] init];
UIViewController *yourMainViewController = [[yourMainViewControllerClass alloc] init];

// when you are ready to go to your options view
optionsViewController *optionsView = [[optionsViewController alloc] initWithNibName:@"optionsView" bundle:nil];

[navController pushViewController:optionsViewController animated:YES];

// the back button and the pop from the stack when it is hit is handled auto-magically for you
于 2009-05-01T02:26:34.283 に答える
0

返信いただきありがとうございます。

しかし、私のアプリケーション アーキテクチャは、いくつかのものを表示する 1 つのメイン ビューとツールバーを持っています。ツールバーには 1 つのボタンが含まれており、クリックすると、このナビゲーション コントローラーが作成されて画面に表示されます。

戻るボタンを使用して、メイン ビューに移動しました。しかし、その後、次の行の実行中にクラッシュしているため、再びナビゲーションに進むことができませんでした

[self presentModalViewController:self.navControllerSettings アニメーション:YES];

ここで何が問題になる可能性がありますか?

ヴィシャール N

于 2009-05-02T01:06:06.653 に答える
0

これと同様の問題があり、presentModalViewController: で 2 回目の試行でクラッシュしました。[self becomeFirstResponder]この問題は、私が提示した最初の UIViewController 内で viewDidAppear: を呼び出すことによって引き起こされましたが[self resignFirstResponder]、viewWillDisappear: での呼び出しに失敗しました。

于 2010-01-29T17:24:23.603 に答える