iPhoneアプリケーション:アプリケーション全体の階層&建築
-
05-07-2019 - |
質問
最初の実際のiPhoneアプリケーションで少し苦労していましたが、これをどのように構成すべきかについてアドバイスを求めました。 UIコンポーネントを作成し、それらをリンクしてアプリケーションフローを作成する(ビュー/コントローラーをプログラムで作成するか、Interface Builderなどを使用して作成する)という点で、いくつかのベストプラクティスを探しています。
概要:
「ログイン」を表示する必要があります。アプリケーションの起動時に表示します。
-「サインアップ」を表示サインアップボタンをクリックした場合に表示されます。
一度ログインすると... 4つのビューをロードするTabBarControllerがあります。これらの4つのビューは、サブビュー(マスター詳細など)をロードする必要があります。
私の質問:
1)このナビゲーション構造をつなぎ合わせる最良の方法は何ですか?各ビューを、対応するViewControllerを持つ.xibとして作成しますか?これらはどのように接着されていますか?
2)ログイン/サインアップナビゲーションの処理方法、起動時にTabBarは表示されませんが、ユーザーの認証後に必要になります。
ボーナスポイント)この種のものについて文書化されたベストプラクティスはありますか?私はいくつかの実行可能なコードを一緒にハッキングしてきましたが、非常に迷子になり、正しい方法でやり直したいと思います。
これは少しわかりにくいかもしれませんが、すべての助けをいただければ幸いです。
編集:タブバーの上部にあるログインビューでは、これを使用しましたが、非常に簡単です。
LoginViewController *loginViewController = [[LoginViewController alloc] init]; [loginViewController initWithNibName:@"Login" bundle:nil]; [self.tabBarController presentModalViewController:loginViewController animated:YES];
解決
XCodeで新しいタブバーベースのアプリケーションを作成するときは、ほぼ希望どおりに設定されています。各XIBファイルから各タブのビューをロードするメインXIBがあります。タブごとに1つのXIBがあります。タイプを変更したり、タブを追加したりするときは、タブバーを備えたXIBとビューの作成に使用するXIBの両方で適切なView Controllerタイプを指定する必要があることに注意してください!
ログインビューに関しては、上記のようにタブバーを使用するのが一般的なアプローチですが、アプリデリゲートapplicationDidFinishLaunchingメソッドでは、ログイン画面を表示するモーダルビューコントローラーを提示します。モーダルコントローラーは、完了するまでTab Barおよびその他すべてを非表示にします。その後、閉じることができます。
他のヒント
1)このナビゲーション構造をまとめる最良の方法は何ですか?各ビューを、対応するViewControllerを持つ.xibとして作成しますか?これらはどのように接着されますか?
UINavigationController
を使用し、必要に応じてカスタムビューをナビゲーションスタックにプッシュします。 Xcodeの New Project オプションを介してサンプルのNavigation Controllerアプリケーションをチェックして、これがどのように機能するかを理解してください。
2)ログイン/サインアップナビゲーションの処理方法、起動時にTabBarは表示されませんが、ユーザーの認証後に必要になります。
ログイン用のビューを設定します(ユーザー名とパスワードの2つの行を含む1つのセクションで UITableView
を使用しますが、それは私自身の好みです)。サインアップフィールド用に2つ目の別のビューを設定します(ここでも、レイアウトをクリーンで一貫性のあるものにするために、 UITableView
を使用します)。
おそらく、認証に成功したら、ビューアニメーションを使用してタブバーをポップアップします。
ボーナスポイント)この種のものに関するベストプラクティスは文書化されていますか?私はいくつかの実行可能なコードを一緒にハッキングしてきましたが、非常に迷子になり、正しい方法でやり直したいと思います。
最終的にプロジェクトを何度も書き直すことになります—それは良いことです。 Appleのサンプルアプリケーション(iPhone ADCサイトから入手可能)には、いくつかの「ベストプラクティス」が含まれています。 UIKit
コンポーネントのいくつかを使用する方法。より大きなアプリケーションをまとめる場合、デザインをできるだけシンプルにし、AppleのUIコンポーネントをできるだけ再利用します。いつでも後でカスタマイズできます。
私の意見では、Cocoaプログラミングの例と非常に単純なアプリケーションのみが単一のnibファイルに適しています。それ以外の場合は、インターフェイスコンポーネントを複数のペン先に広げる必要があります。これは、各ペン先が小さくなり、メモリにロードされるときに必要なコンポーネントのみがロードされることを意味します。これにより、アプリケーションのパフォーマンスが向上し、プログラムを論理的に整理し、問題が発生したときにデバッグしやすくなります。
タブバーアプリでは、MainWindow.xibを使用してメインウィンドウとタブバーを格納しますが、上記の理由で各タブを別々のペン先に分割します。
Appleは次のガイドラインを提供しています:
nibファイルを作成するときは、次のガイドラインに留意してください:
遅延読み込みを念頭に置いてnibファイルを設計します。すぐに必要なオブジェクトのみを含むnibファイルのロードを計画してください。
Mac OS Xアプリケーションのメインnibファイルでは、nibファイルにアプリケーションメニューバーとオプションのアプリケーションデリゲートオブジェクトのみを保存することを検討してください。アプリケーションが起動するまで使用されないウィンドウやユーザーインターフェイス要素を含めないでください。代わりに、それらのリソースを個別のnibファイルに配置し、起動後に必要に応じてロードします。
繰り返されるユーザーインターフェイスコンポーネント(ドキュメントウィンドウなど)を個別のnibファイルに保存します。
まれにしか使用されないウィンドウまたはメニューの場合は、別のnibファイルに保存します。別のnibファイルに保存することにより、実際に使用される場合にのみリソースをメモリにロードします。
詳細については、次のサイトをご覧ください: