2

私は iPhone 用にプログラミングしていますが、いつビューの addSubview メソッドを使用し、いつモーダル ビュー コントローラー (presentModalViewController) を使用して提示するのか疑問に思っています。これをさらに複雑にしているのは、ナビゲーション コントローラーを使用していて (私は使用していません)、pushViewController メソッドを使用できる場合です。

それぞれをいつ、なぜ使用しますか?

ありがとう。

4

2 に答える 2

5

-presentModalViewController-pushViewControllerは同じことを行う 2 つの方法です: 新しいビューを表示します。どちらを使用するかは、目的のユーザー エクスペリエンスによって異なります。これらはユーザーにとっては異なる意味を持ちますが、実装は非常に似ています。

-addSubviewは完全に異なります。コンポーネントを現在のビューに追加します。独立した UI を表示するために使用しないでください。-addSubviewで UI をプログラムによって作成するときに最もよく使用されます-loadViewが、他にも多くの用途があります。

于 2010-02-01T18:32:33.210 に答える
3

これを確認する 1 つの方法を次に示します。

単一のナビゲーション コントローラー内のビュー コントローラーのシーケンスは、ユーザーの頭の中の単一のワークフローを表します。ある時点で現在のワークフローを中断して分岐ワークフローを作成する必要がある場合は、モーダル ダイアログを作成します。新しいワークフローにステップが 1 つしかない場合は、対応するコントローラーを提示するだけですが、ステップが多数ある場合は、新しいナビゲーション コントローラーを作成してステップをつなぎ合わせます。

ビジュアルは異なります。ナビゲーション コントローラーではユーザーの注意は左から右に移動しますが、モーダル ダイアログでは上から下に移動します。本をめくって(左から右に)、ある時点で本を自分から遠ざけ、別の本をテーブルの下から引き出して自分の前に置き(上から下に)、次に始めると想像してください。その別の本を読んでいます(左から右へ)。次に、2 番目の本全体を閉じて、中断した最初の本に戻ります。

addSubview メソッドは別の抽象化平面にあります。サブビューは、上で説明した 2 つのエクスペリエンスを作成するために使用されます。サブビューを使用して、同じ抽象化レベルにある別のエクスペリエンスを作成できます。同じレベルのコンストラクトの例として、UIAlertView と UIActionSheet があります。

于 2010-02-01T19:52:14.827 に答える