0

私は iOS ナビゲーション コントローラー アプリに取り組んでいますが、疑問が生じました。どこにも見つかりませんでした。ナビゲーションコントローラーを作成し、他の複数のビューコントローラーを使用してナビゲーションを行う場合、これらのビューコントローラーがメモリに正確に保存され、戻るボタンなどをクリックしたときにナビゲーションコントローラーが前のコントローラーに移動できる方法.誰かが私に説明してもらえますか?

ありがとうございました。

4

2 に答える 2

1

コンセプトはスタックのようにシンプルです。オブジェクトを押して、ポップすることもできます。使用するとき

[navigationController pushViewController:viewController animated:YES];

を使用してアクセスできるviewControllerのスタックにオブジェクト(ここではviewController)をプッシュします[navigationController viewControllers];

u は既存のコントローラを確認できます:

NSLog("view controllers %@", [navigationController viewControllers]);

viewControllers は、すべてのオブジェクトがプッシュされた NSArray です。そのため、特定のコントローラーへの参照は常にそこにあるため、任意のビューコントローラーに戻ることができます

戻るボタンをクリックするtopViewControllerと、配列からポップアウトします。 popToRootViewController viewController 配列に追加された最初のコントローラーに u をポップします。

u を使用して、アレイ内の特定のコントローラーに戻ることもできます

[self.navigationController popToViewController: animated:];

すでに述べた NSArray(viewControllers) からパラメーターを渡す必要があります。例:

[self.navigationController popToViewController:[[navigationController viewControllers] objectAtIndex:1] animated:YES];

それが役に立てば幸い。幸せなコーディング:)

于 2012-09-04T07:41:25.977 に答える
1

UINavigationController は、他のビュー コントローラーを格納します。View Controller を表示するときは、それを Navigation Controller にプッシュします。

[navigationController pushViewController:viewController animated:YES];

これは、ナビゲーション コントローラーがビュー コントローラーへの参照を保持するため、解放されないことを意味します。同様に、View Controller をポップして前のものを表示します。この時点で、現在のView Controllerへの参照が解放されます。View Controller が解放されなくても、通常どおりアンロードおよびリロードされる可能性があることに注意してください。

于 2012-09-04T06:46:45.527 に答える