-1

昨日からiOS開発を始めて、2つの切り替えビューを設定してみました。チュートリアルの助けを借りて、それは実際には問題ではありませんでした. それから私は考えました: 3 番目のビューを作りましょう。すべてうまくいきましたが、3番目から2番目に切り替えようとすると、1に切り替わります。 [self presentModalViewController...] を使用しようとすると、そこに書いたビューに前方に切り替わりますが、後方には切り替わりません。[自己却下...] を使用すると、常に最初のビューに切り替わります。このスイッチをどこでも好きな場所に切り替える可能性はありますか? 3対2、2対1、3対1など

よろしく

4

4 に答える 4

1

ビューを切り替えると言うときは、ビューコントローラーを参照しています。コントローラーを切り替えるには、さまざまな方法があります。

何よりもまず、新しいビュー コントローラーへのプッシュです。これは、現在のビュー コントローラーがナビゲーション コントローラーを保持している場合にのみ実現できます。ナビゲーション コントローラーは、ビュー コントローラー間を移動できるコントローラーです。また、「pushViewController」メソッドを使用して新しいコントローラーに移動した場合は、「ナビゲーション コントローラーの popviewcontroller メソッド」を使用して前のコントローラーに戻る必要があります。これにより、前の画面/コントローラーに戻ることができます。

ただし、新しいコントローラーにプッシュするときはいつでも、これは1つのコントローラーをスタックに追加/挿入していることを意味し、スタックがLIFOであることを知っているので、最後のコントローラーは最初にスタックから外さなければならず、その後で他の要素を取得できますスタック。

たとえば、3 つのコントローラー A、B、C がある場合、A から開始して B にプッシュし、さらに B から C にプッシュすると、スタックには CBA が含まれます (C が一番上になり、A が一番上になります)。一番下になります)。したがって、最初に C をポップアウトし、次に B などをポップアウトする必要があります。

新しいコントローラーに移動する他の方法は次のとおりです。presentModalViewController を使用して画面/コントローラーを表示します。これは、dismissmodalviewcontroller メソッドを使用して削除できます。

お役に立てれば。

于 2013-02-17T09:47:03.483 に答える
0

1 つの viewContoller で作業して、次のような異なるビューを切り替えることはできますか?

[view1 removeFromSuperview];
[myRootView addSubview: view2];
于 2013-02-17T09:36:09.167 に答える
0

前進するには、以下のように UINavigation コントローラーを使用できます。

FirstViewController *firstViewController = [[FirstViewController alloc] initWithNibName:@"FirstView" bundle:[NSBundle mainBundle]]; 

  [self.navigationController pushViewController:firstViewController animated:YES];
  [firstViewController release];

myViewController はビューコントローラーのオブジェクトです。& 1 つのビューの場合は、次の行の下でのみ使用してください:

[self.navigationController popViewControllerAnimated:YES];
于 2013-02-17T09:04:07.307 に答える
0

モーダル ビュー コントローラーを表示する場合は、続行する前にそれを閉じる必要があります。特に、View Controller 1 をモーダルに表示してから、View Controller 2 をモーダルに表示してから、View Controller 1 をモーダルに表示することはできません。

少なくとも、モーダル ビュー コントローラー 2 を閉じる必要があります。その後、1 はまだ存在しているはずです。

これらのコントローラーの性質によっては、UINavigationController またはビューのスワッピングがより適切な方法である場合があります。

于 2013-02-17T14:29:22.300 に答える