从JSON NSDictionary创建深入细节UITableView

时间:2010-06-10 19:10:58

标签: iphone json uitableview nsdictionary detailsview

我很难找到如何做到这一点,

我希望在UITableDetailView(Drill-Down样式)中显示此内容,其中每个项目位于不同的单元格中。我读过的所有内容都显示了如何在细节上加载单个图像而不是显示为UITableView。字典是否必须有“子”才能正确加载?以下是从JSON rowsArray创建* dict的第一个视图的代码。

我想我正在寻找的是在FollowDetailViewController.m中放置什么来查看* dict内容的其余部分,所以当选择一行时,它会加载* dict的其余部分。

我有rowsArray返回如下:

'{loginName = Johnson;

memberid = 39;

name = Kris;

age =;}等等...

谢谢,

// SET UP TABLE&细胞

  - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
}
    NSDictionary *dict = [rowsArray objectAtIndex: indexPath.row];

    cell.textLabel.text = [dict objectForKey:@"name"];
    cell.detailTextLabel.text = [dict objectForKey:@"loginName"];
    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;   
    return cell;
}

- (void)viewDidAppear:(BOOL)animated {
      [super viewDidAppear:animated];



- (void)viewDidLoad {
    [super viewDidLoad];

//GET JSON FROM WEBSERVICES:
    NSURL *url = [NSURL URLWithString:@"http://10.0.1.8/~imac/iphone/jsontest.php"];
    NSString *jsonreturn = [[NSString alloc] initWithContentsOfURL:url];

    NSData *jsonData = [jsonreturn dataUsingEncoding:NSUTF32BigEndianStringEncoding];
NSError *error = nil;

    NSDictionary * dict = [[CJSONDeserializer deserializer] deserializeAsDictionary:jsonData error:&error];
    if (dict)
    {
        rowsArray = [dict objectForKey:@"member"];
        [rowsArray retain];
    }


[jsonreturn release];

}

//GO  TO DETAIL VIEW:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    FollowingDetailViewController *aFollowDetail = [[FollowingDetailViewController alloc] initWithNibName:@"FollowingDetailView" bundle:nil];
    [self.navigationController pushViewController:aFollowDetail animated:YES];
}

1 个答案:

答案 0 :(得分:0)

不要使用阻塞调用来检索JSON。如果您的网络速度很慢,您的应用就会挂起您应该使用异步方法来检索数据。

查看将JSON内容加载到模型对象中。然后使用一组模型来为您的tableview提供动力。然后,DidSelectRowAtIndexPath可以通过自定义初始化程序或在分配/初始化后设置属性,将模型对象的实例传递到详细信息视图中。你的问题很难解析,所以我不确定我是否正在解决你的问题。查看开发人员站点上的表视图UI层次结构的众多示例。