我无法使用“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];
}
希望这能帮助你看到我遇到问题的地方......任何形式的帮助都会很棒。谢谢!
答案 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:
方法中。