-1

JsonをNSDictionaryにロードしていますが、出力は以下のとおりです。UItableviewに挿入できるように解析する方法がわからないため、最初の行は6 street 10950と表示され、2番目の行はMunchlane11730と表示されます。ご協力ありがとうございました。

(
    {
    "address_line1" = "6 street";
    "zipcode" = 10950;
},
    {
    "address_line1" = "Munch lane";
    "zipcode" = 11730;
}
)
4

2 に答える 2

0

最初は、このjsonをNSArrayにロードする必要があります。その後、使いやすくなります。

次に、テーブルビューデータソースにそのようにロードするだけです。

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return myArray.count;
}

// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier] autorelease];
        //cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
    }

    NSDictionary *cellDict = [myArray objectAtIndex:indexPath.row];

    cell.textLabel.text = [cellDict objectForKey:@"address_line1"];
    cell.detailTextLabel.text = [cellDict objectForKey:@"zipcode"];

    return cell;
}
于 2012-06-24T23:59:35.253 に答える
0

NSJSONSerializationなどのjsonパーサーを実行したとすると、NSDictionaryのNSArrayが作成されます。cellForRowAtIndexPathUITableViewまたはUITableViewControllerクラスにUITableViewDatasourceメソッドを実装します。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString     *CellIdentifier = @"Cell";
    UITableViewCell     *cell = nil;
    NSDictionary        *addressDictionary = nil;

    cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil){
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
    }
    if ([indexPath row] <= [[self jsonAddressArray] count]){
        rowDictionary = [[self jsonAddressArray] objectAtIndex:[indexPath row]];
        if (rowDictionary != nil){
            cell.textLabel.text = [rowDictionary objectForKey:@"address_line1"];
            cell.detailTextLabel.text = [rowDictionary objectForKey:@"zipcode"];
        }
    }
    return cell;
}

(これは、プロパティ'jsonAddressArray'を解析されたJSONデータに設定することを前提としています。)

これにより、アドレス行1がセルの最初の行に配置され、郵便番号がセルの2行目に配置されます。両方を1行にする場合は、セルのスタイルをに変更しUITableViewCellStyleDefault、2つの文字列を組み合わせて、cell.textLabel.textその文字列に設定します。

于 2012-06-25T00:04:58.123 に答える