2013-11-27 44 views
0

我有一个iPhone应用程序,它从.csv文件中读取本地企业的详细信息。有3个主要部分:传递给UIViewController的Xcode错误对象

  1. 在哪里睡觉
  2. 在哪里吃
  3. 怎么办

根据一个被点击上(例如在睡眠状态),你会得到一分

  1. 乙&乙
  2. 酒店:像选项部分小号
  3. 大篷车和露营

然后,如果你选择例如酒店,您显示的是酒店列表的UITableView。 UITableView有2个区域来区分三星级和四星级酒店。请参阅下面的抓屏。 enter image description here

到目前为止这一切都可以,但是当我点击某个单元格以延伸到业务的详细信息页面(UIViewController)时,我会使用错误的单元格信息继续。

我已经遍及我的UITableViewController的didSelectRowAtIndexPath中的代码,它似乎是我在每个单元格上注册正确的选择。

作为一个例子,在上面的图片中,如果我选择Ballyroe Heights Hotel,那么这是我在逐步浏览时得到的输出。其中dataArray()是一个NSMutableArray,它包含一个3星级的NSMutableArray和一个如下添加的四星级酒店的NSMutableArray。

[dataArray addObject:threeStarArray]; 
[dataArray addObject:fourStarArray]; 

Output Image

然而,点击Ballyroe高地酒店显示Ballygarry House酒店Hotel and Spa的

线索可能是什么回事是在购物节的详细信息。以下是购物视图和部分外观的屏幕截图。

enter image description here

点击庄园西Retail Park公园显示正确的信息。但点击肖斯百货公司再次显示庄园西部零售公园。然后点击Thats Perfect显示Shaws百货商店 - 点击Sean Hussey显示Thats Perfect details。这是每个部分重复的。

点击Hardware(Kellihers ...)再次在Manor West零售公园亮相。

但再次通过它,似乎在didSelectRowAtIndexPath()中选择了正确的单元格。

在下面的示例中,我选择了Sean Hussey,输出显示正确的单元格被选中,并且segue sender:selectedCell是Sean Hussey对象。

但是,传递给UIViewController的对象是Thats Perfect。 任何人都可以看到我要去哪里错了吗?可以提供额外的代码,但我确定问题必须在这里,因为此方法检查行选择并执行segues。

enter image description here

+0

什么更新您的视图样子的代码? – esqew

回答

1

您正在使用错误的API来发送数据。数据使用prepareForSegue通过不performSegue

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

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
NSLog(@"prepareForSegue: %@", segue.identifier ); NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];

if ([segue.identifier isEqualToString:@"mySegueId"] && indexPath) { NSArray *selectedRowArray = [dataArray objectAtIndex:indexpath.section]; BusinessDetailContent *selectedContent = [selectedRowArray objectAtIndex:indexpath.row]; BusinessDetailController *detailController = segue.destinationViewController; detailController.selectedcontent = selectedContent; }

}