1

私は iOS の知識がなく、サーバー側から送信された情報に基づいてフォームを動的に作成する必要があるアプリケーションを見ています。

私はサーバー側 (Java EE ベース) から見ていますが、この道を進むべきかどうかを決定する iOS 側の制約と実践について明確にしたいと思います。

iOS アプリに送信されたデータが次のようになっている場合:

[
    {
        "values": "Text Field",
        "required": "true",
        "hidden": "true",
        "readonly": "false",
        "prevalue": "This is text field",
        "fieldesc": "First Name"
        "mask": "false"
    },

    {
        "values": "Text Field",
        "required": "true",
        "hidden": "true",
        "readonly": "false",
        "prevalue": "01/01/1980",
        "fieldesc": "Date Of Birth"
        "mask": "false"
    },


    {
        "values": "Text Field",
        "required": "true",
        "hidden": "true",
        "readonly": "false",
        "prevalue": "888 888 888",
        "fieldesc": "Tax File Number"
        "mask": "true"
    },
]

iOS アプリで適切なフィールドを作成する必要があります。

フィールドの数が増えると、これは複雑になり、別のページに保持しなければならない場合があります。

これにどのようにアプローチすべきかを確認するために、考えや提案を聞きたかった.

4

2 に答える 2

3

から始めUITableViewControllerます。UITableViewDataSourceおよびデリゲートを実装しUITableViewDelegateます。これにより、サーバーから取得するフィールド メタデータに基づいて行を動的に作成できます。

などcellForRowAtIndexPathのメソッドを実装し、フォームの各フィールドに UITableViewCells を作成します。numberOfRowsnumberOfSections

UITextFieldテーブルビューの各セルにコントロールを挿入します。最終的に、テーブルビュー内に埋め込まれたテキストフィールドでいっぱいのスクロール可能で編集可能なフォームになります。

于 2013-02-28T05:11:07.350 に答える
2

私の解決策は最善の解決策ではないと思いますが、単純な for ループを使用して実装できると思います。

まず、JSON 全体を解析する必要があります。これにより、3 つの辞書を含む配列が得られます。

float xCord = 20;
float yCord = 40;

for (int loop = 0; loop<[parsedJsonArray count]; loop++)
{
  xCord = 20;
  //You need to create a label for displaying the description
  UILabel *lab = [[UILabel alloc] initWithFrame:CGRectMake(xCord,yCord,100,20)];
  lab.text = [[parsedJsonArray objectAtIndex:0] valueForKey:@"fieldesc"];
  [self.view addSubview:lab];

  xCord = 130;
  if ([[[parsedJsonArray objectAtIndex:0] valueForKey:@"values"] isEqualToString:@"Text Field"])
 { 
   UITextField *tfd = [[UITextField alloc] initWithFrame:CGRectMake(xCord,yCord,100,20)];
   tfd.text = [[parsedJsonArray objectAtIndex:0] valueForKey:@"prevalue"];
   [self.view addSubview:tfd];
 }

 yCord += 35;
}

必要に応じて x 座標と y 座標を調整する必要があります。テキスト フィールドやその他のフォーム要素についても同じ操作を行います。

別のポイント: 複数のページが必要な場合は、ループ内で処理する必要があります。しかし、その上にスクロール ビューやその他の要素を配置することをお勧めします。

于 2013-02-28T05:28:23.277 に答える