0

我有UINavigationController一个UITableViewControlleras rootViewController。我从表格视图的原型单元格创建了一个 segue,并将其与另一个UIViewController. 我的 segue 的标识符是“详细信息”。在我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>.

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

4

3 回答 3

1

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

但是,如果您打电话performSegueWithIdentifier请不要接线!

于 2012-10-19T12:46:00.710 回答
1

Interface Builder选择UITableViewCell. 将其触发的选择连接seguedestinationViewController. 在您的源代码中UIViewController实现prepareForSegue:功能并传递destinationViewController所有相关信息。无需致电performSegueWithIdentifier:

于 2013-07-05T17:29:41.707 回答
0

只需在您的 didselect 方法中执行此操作

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

我认为您正在其他功能中进行推送,这也是嵌套推送错误或检查情节提要中的推送序列是否正确链接到下一个视图

于 2015-03-04T07:23:02.217 回答