performSegueWithIdentifier:sender:找不到我的segue

时间:2012-10-18 20:07:18

标签: ios xcode uinavigationcontroller segue

我有UINavigationController UITableViewControllerrootViewController。我从表格视图的原型单元格中创建了一个segue,并将其与另一个UIViewController连接起来。我的segue的标识符是“Detail”。在我的表视图委托(正在调用)的tableView:didSelectRowAtIndexPath:方法中,我有以下行:

[self.navigationController performSegueWithIdentifier:@"Details" sender:nil];

运行我的应用程序并点击其中一个单元格时,会抛出异常,因为'Receiver (<UINavigationController: 0x71c65b0>) has no segue with identifier 'Details''

这里可能出现什么问题?

修改

当我改变

[self.navigationController performSegueWithIdentifier:@"Details" sender:nil];

[self performSegueWithIdentifier:@"Details" sender:nil];

推送了下一个视图,但是我收到了这些错误:

2012-10-19 12:32:05.128 Numbers[44850:c07] nested push animation can result in corrupted navigation bar
2012-10-19 12:32:17.234 Numbers[44850:c07] Finishing up a navigation transition in an unexpected state. Navigation Bar subview tree might get corrupted.
2012-10-19 12:32:17.236 Numbers[44850:c07] Unbalanced calls to begin/end appearance transitions for <DetailViewController: 0x74a1fb0>.

显然,我不应该让我当前的视图控制器完成工作,而是我的导航视图控制器(这就是它的用途)。回到后面的按钮会产生奇怪的动画,就像警告警告我一样。

3 个答案:

答案 0 :(得分:1)

只是一个猜测,但您是否有可能连接segue 按代码触发它? 如果没有“特殊”原因,您通常不需要致电performSegueWithIdentifier:sender。相反,只需将tableviewcells与所需的segue连接即可。

但是,如果您拨打performSegueWithIdentifier连接它!

答案 1 :(得分:1)

Interface Builder中选择UITableViewCell。将其选择内容seguedestinationViewController联系起来。在您的来源UIViewController中实施prepareForSegue:功能,并传递destinationViewController所有相关信息。无需致电performSegueWithIdentifier:

答案 2 :(得分:0)

在你的didselect方法中执行此操作

[self performSegueWithIdentifier:@“Details”sender:nil];

我认为你正在推进其他功能也是因为它给嵌套推送错误或检查你在故事板中推送segue是否正确链接到下一个视图