Objective C - 将JSON数据从Tableview传递到另一个View Controller

时间:2014-10-04 13:35:55

标签: ios objective-c iphone json uitableview

JSON数据:

({

    CustDisplayName = "John Doe";
    CustID = 2;
},
    {
    CustDisplayName = "Jane Doe";
    CustID = 21;
})

在桌面视图上显示数据,如联系人列表,以及从单元格到其他视图的segue(推送)。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath 
*)indexPath {
    [self performSegueWithIdentifier:@"pushDetailView" sender:indexPath];
}

现在我通过prepareForSegue传递数据

if ([[segue identifier] isEqualToString:@"pushDetailView"]) {
    NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];

    NSLog(@"%@", indexPath);
}

日志只显示0,1,2,3,这不是我想要的。我不确定什么是最好的方法。

  1. 选择行获取CustID并在另一个视图的viewDidLoad上执行另一个请求?
  2. 选择行获取该数组并将字符串传输到另一个视图?
  3. 我是iOS开发新手,希望有人可以提供帮助。

3 个答案:

答案 0 :(得分:1)

我猜你需要的是indexPath.row而不是indexPath

答案 1 :(得分:0)

在目标ViewController的头文件中,定义名为dict的NSDictionary类型的属性。并将您的Json数据解析为具有NSDictionary对象的数组。

if ([[segue identifier] isEqualToString:@"pushDetailView"]) {
   UIViewController *controller = segue.destinationviewcontroller;
   controller.dict = [array objectAtIndex:indexPath.row].
}

答案 2 :(得分:0)

我们假设您的数据源是NSArray,其中包含Customer个对象。

首先,在详细视图中创建一个Customer属性:

@property (nonatomic,strong) Customer customer;

然后,您必须在选择行时设置此属性。为此,请使用prepareForSegue方法:

-(void) prepareForSegue:(UIStoryboardSegue*)segue sender:(id)sender
{
   if ([[segue identifier] isEqualToString:@"pushDetailView"]) {
      DetailViewController*destination= segue.destinationviewcontroller;
      NSIndexPath* indexPath = [tableView indexPathForCell:sender];
      destination.customer = datasource[indexPath.row];
   }
}

确保在调用performSegue时将单元格设置为发件人。 确保它的一种方法是从故事板创建segue而不是手动执行。

您可能还希望使用它来轻松解析您的JSON:https://github.com/icanzilb/JSONModel/