iphone - データ駆動型UIの構築

iphone ios cocoa-touch ipad user-interface

私はiPhoneについてこのトピックについてSO全体を検索しましたが、すべてWWDC 2010のカバレッジを指していますので、そうです。しかし、私が提示しているデータに応じて、アプリにさまざまなユーザーインターフェイスを提示するための堅牢なシステムを構築する方法を学ぶことができる詳細なリソースを誰かに教えてもらえますか? JSON形式でデータをフェッチしていますが、JSONパーサーから取得する内容に応じてUIを変更する必要があります。

このトピックについて詳しく説明している本やオンラインリソースはありますか?

ありがとう!
答え
最近、私のアプリの1つ(ナビゲーションスタイル)で同じ問題が発生しました。解決方法はかなり簡単です。

JSON応答にuser_typeフラグがあり、そのフラグに応じて、別のビューコントローラーをプッシュします。

たとえば、私のJSON応答が「応答」と呼ばれるNSMutableDictionaryに保存されているとします

if ([response objectForKey:@"account_type"] == 1) {
  /*
    initialize user_type 1 viewController
  */
    [self.navigationController pushViewController:userType1ViewController animated:YES];
else if ([response objectForKey:@"account_type"] == 2) {
  /*
    initialize user_type 2 viewController
  */
    [self.navigationController pushViewController:userType2ViewController animated:YES];
}


必要な数のuser_typeをいくつでも持つことができます。

コメントで明確化した後の編集

これらのビューは手動で描画することになるでしょう。

リストしたさまざまな質問の種類ごとにUIViewをサブクラス化します(質問のタイトル、選択肢などの一般的な要素のプロパティを含みます)。同じ質問タイプの質問は同じレイアウトになると仮定します。

次に、JSON応答を循環して(配列または辞書にあると)、レイアウトできます。

複数選択の質問の場合は、新しいmultipleChoiceQuestionビューを作成し、そのプロパティを追加してから、メインのフィードビューにaddSubviewを追加します。次に、次のビューでは、フレームを次のように設定する必要があります。

nextQuestion.frame = CGRectMake(0, 0 + firstQuestion.frame.size.height, height, width);


これにより、2番目の質問が最初の質問のすぐ下に描画されます。
関連記事

iphone - オブジェクトを含むすべての配列からオブジェクトを削除するにはどうすればよいですか?

iphone - iPhoneバックアップファイルのパスワードブレーカーを作成する

iphone - UINavigationBarで「マット」カラーを取得するにはどうすればよいですか?

iphone - (iPad / iPhone)画面上で表のセルを更新する

iphone - iOSアプリに最適な自動化テストツールのリストが必要[終了]

iphone - OpenCV for iPhoneを使用して画像内のさまざまなサイズのオブジェクトを検出する方法

iphone - iPadでグリッドピクセルエディターを作成する

iphone - メインウィンドウの異なる.hからオブジェクトを制御する

iphone - iPhone、iPad、AndroidデバイスでTouchPointの直径を計算する方法は?

iphone - AppleとAndroidでの物理的な商品とサービスの購入の可能性