2

我无法使用“prepareForSegue”方法将数据发送到其他视图...</p>

我有一个表格视图,其中填充了来自 sqlite 查询的结果。当我点击其中一个表格单元格时,它会将我引导到另一个视图,其中我有一个标签,该标签将告诉我 ID 和名称

我有一个 NSString 保存来自 SQLite 数据源的 ID 值。我想将该 id 传递给我的应用程序的第二个视图,以使用它从基于该 id 的 sqlite 数据源中获取信息。

现在我已经编写了代码,它将信息从一个视图传递到另一个视图……但由于某种原因,这些信息是“不合格的”。这就是我的意思,我列出了 3 个山区:Deception、Far Side 和 Mt. Washington(在第一个视图的 tableview 中列出)。当我点击华盛顿山时,它会转到第二个视图,我设置的标签告诉我所选单元格的名称……。为空白。我点击导航栏上的返回按钮,再次点击华盛顿山,这次标签显示的是“华盛顿山”的名称。现在,当我返回并单击“远侧”时,标签显示“华盛顿山”。当我返回并再次单击“远端”时,标签变为“远端”。希望这是有道理的。

有谁知道如何解决这个问题?这是我的代码:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
    if([[segue identifier] isEqualToString:@"areaIDpush"]){
      RockViewController *rockRoutes = [segue destinationViewController];
      rockRoutes.rockID = areaID_fk;
      rockRoutes.rockName = areaName_fk;
    }
}



- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {    
   UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
   areaID_fk = cell.detailTextLabel.text;
   areaName_fk = cell.textLabel.text;
}

- (void)viewWillAppear:(BOOL)animated {
[areaIDLabel setText:rockID];
[areaNameLabel setText:rockName];
[super viewWillAppear:animated];

}

希望这能帮助您了解我遇到问题的地方......任何帮助都会很棒。谢谢!

4

2 回答 2

2

将我的代码发送给好友,他帮助我意识到出了什么问题。

这是正确的代码:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
        if([[segue identifier] isEqualToString:@"areaIDpush"]){
        RockViewController *rockRoutes = [segue destinationViewController];
        rockRoutes.rockID = areaID_fk;
        rockRoutes.rockName = areaName_fk;

        UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:self.tableView.indexPathForSelectedRow];
        rockRoutes.rockName = cell.textLabel.text;
        rockRoutes.rockID = cell.detailTextLabel.text;
    }
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
}
于 2011-12-31T07:30:39.477 回答
1

您必须在didSelectRowAtIndexPath: 方法中传递名称和 ID。首先,您在第二个视图中为名称和 ID 初始化了两个变量。然后从您的第一个视图传递值,例如

secondview.variable1=ID;
secondview.variable2=name;

在你的didSelectRowAtIndexPath:方法中。

于 2011-12-27T04:39:54.980 回答