私は iPhone 用にプログラミングしていますが、いつビューの addSubview メソッドを使用し、いつモーダル ビュー コントローラー (presentModalViewController) を使用して提示するのか疑問に思っています。これをさらに複雑にしているのは、ナビゲーション コントローラーを使用していて (私は使用していません)、pushViewController メソッドを使用できる場合です。
それぞれをいつ、なぜ使用しますか?
ありがとう。
私は iPhone 用にプログラミングしていますが、いつビューの addSubview メソッドを使用し、いつモーダル ビュー コントローラー (presentModalViewController) を使用して提示するのか疑問に思っています。これをさらに複雑にしているのは、ナビゲーション コントローラーを使用していて (私は使用していません)、pushViewController メソッドを使用できる場合です。
それぞれをいつ、なぜ使用しますか?
ありがとう。
-presentModalViewController
と-pushViewController
は同じことを行う 2 つの方法です: 新しいビューを表示します。どちらを使用するかは、目的のユーザー エクスペリエンスによって異なります。これらはユーザーにとっては異なる意味を持ちますが、実装は非常に似ています。
-addSubview
は完全に異なります。コンポーネントを現在のビューに追加します。独立した UI を表示するために使用しないでください。-addSubview
で UI をプログラムによって作成するときに最もよく使用されます-loadView
が、他にも多くの用途があります。
これを確認する 1 つの方法を次に示します。
単一のナビゲーション コントローラー内のビュー コントローラーのシーケンスは、ユーザーの頭の中の単一のワークフローを表します。ある時点で現在のワークフローを中断して分岐ワークフローを作成する必要がある場合は、モーダル ダイアログを作成します。新しいワークフローにステップが 1 つしかない場合は、対応するコントローラーを提示するだけですが、ステップが多数ある場合は、新しいナビゲーション コントローラーを作成してステップをつなぎ合わせます。
ビジュアルは異なります。ナビゲーション コントローラーではユーザーの注意は左から右に移動しますが、モーダル ダイアログでは上から下に移動します。本をめくって(左から右に)、ある時点で本を自分から遠ざけ、別の本をテーブルの下から引き出して自分の前に置き(上から下に)、次に始めると想像してください。その別の本を読んでいます(左から右へ)。次に、2 番目の本全体を閉じて、中断した最初の本に戻ります。
addSubview メソッドは別の抽象化平面にあります。サブビューは、上で説明した 2 つのエクスペリエンスを作成するために使用されます。サブビューを使用して、同じ抽象化レベルにある別のエクスペリエンスを作成できます。同じレベルのコンストラクトの例として、UIAlertView と UIActionSheet があります。