我在从UITableView将数据传递到第二个视图时遇到问题

时间:2011-12-27 04:31:21

标签: ios sqlite uitableview segue

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

我有一个tableview,其中填充了sqlite查询的结果。当我点击其中一个表格单元格时,它会将我引导到另一个视图,在那里我有一个标签,告诉我

的ID和名称

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

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

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

-(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];

}

希望这能帮助你看到我遇到问题的地方......任何形式的帮助都会很棒。谢谢!

2 个答案:

答案 0 :(得分: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 {
}

答案 1 :(得分:1)

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

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

didSelectRowAtIndexPath:方法中。