performSegueWithIdentifier进入错误的视图

时间:2012-08-09 22:53:41

标签: objective-c xcode4

我正在使用此代码使tableview单元格转到新视图:

[self performSegueWithIdentifier:@"hello" sender:self];

但每当我构建并运行它,并单击该单元格时,它会将我带到一个完全不同/不相关的视图。 有什么想法吗?

2 个答案:

答案 0 :(得分:0)

在故事板中检查segue的标识符。

此外,如果你有多个segue,请检查你是否有正确的segue连接到正确的按钮和正确的视图。

答案 1 :(得分:0)

尝试在TableViewController中使用以下代码

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([[segue identifier] isEqualToString:@"yourSegueIdentifierName"]) {
        NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
        NSManagedObject *object = [[self fetchedResultsController] objectAtIndexPath:indexPath];
        [[segue destinationViewController] setDetailItem:object];
    }
}

这将侦听segue,检查segue的标识符和您选择的行。然后它会使用您选定行的对象执行您的segue。 如果您需要,它还允许您在一个视图中轻松拥有多个segue,您只需为不同的segue标识符添加“if”函数。

如果你在TableViewController中只使用一个segue,你实际上并不真正需要标识符,但最好还是使用它,以防万一你想在稍后阶段为你的代码添加一些其他的segue