8

私はiOSプログラミングの初心者で、ホームビューに戻る機能を実装したいと思っています。

私はこのコードを使用しました:

-(IBAction)onclickhome:(id)sender
{

    [self.navigationController popViewControllerAnimated:YES];
}

ホームボタンクリックイベントでnavigationControllerを使用しましたが、ホーム画面にジャンプしません。

私のコードに当てはまる提案やソースコードはありますか?

4

3 に答える 3

12

あなたの質問を理解しているかどうかわかりません。

あなたはどういう意味ですか

ホームボタンのクリックイベントでnavigationControllerを使用しましたが、ホーム画面にジャンプしません

?

ルートコントローラーにポップしたい場合は、popToRootViewControllerAnimated.

[self.navigationController popToRootViewControllerAnimated:YES];

のAppleドキュメントからUINavigationController

popToRootViewControllerAnimated:

Pops all the view controllers on the stack except the root view controller and updates the display.
- (NSArray *)popToRootViewControllerAnimated:(BOOL)animated

a を設定し、UINavigationControllerそのルート コントローラーが A である場合、A から B に移動し、次に B から C に移動すると、前のコントローラーに戻る可能性が 2 つあります (他のコントローラーを使用することもできますが、主要なコントローラーをリストします)。 ):

  • CからBに戻るpopViewControllerAnimated
  • CからAに戻るpopToRootViewControllerAnimated
于 2012-07-09T09:55:13.090 に答える
6

ビューを前後にナビゲートする最良の方法は、ナビゲーション ビュー コントローラー スタックからビューをプッシュおよびポップすることです。

1 つ前のビューに戻るには、以下のコードを使用します。これにより、ビュー間のスムーズな遷移が維持されます。

UINavigationController *navigationController = self.navigationController;
[navigationController popViewControllerAnimated:YES];

2 つのビューに戻るには、次のようにします。

UINavigationController *navigationController = self.navigationController;
[navigationController popViewControllerAnimated:NO];
[navigationController popViewControllerAnimated:YES];

期待するビューに戻らない場合は、ビューをポップする前に以下のコードを実行してください...

UINavigationController *navigationController = self.navigationController;
NSLog(@"Views in hierarchy: %@", [navigationController viewControllers]);

以下のような配列が表示されるはずです。これは、スタックが期待どおりに維持されていることを確認するのに役立ちます。

Views in hierarchy: (
    "<Main_ViewController: 0x1769a3b0>",
    "<First_ViewController: 0x176a5610>",
    "<Second_ViewController: 0x176af180>"
于 2013-12-01T04:24:02.767 に答える
4

私が使う

[self dismissViewControllerAnimated:YES completion:nil];

Xcode 8.0では他の回答が機能しなかったため

于 2016-12-30T11:55:29.930 に答える