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,这不是我想要的。我不确定什么是最好的方法。
我是iOS开发新手,希望有人可以提供帮助。
答案 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/