【问题标题】:Push segues can only be used by UINavigationController ErrorPush segues 只能被 UINavigationController 使用错误
【发布时间】:2014-07-25 17:49:13
【问题描述】:

尝试在 UIViewController 上执行“推送”序列时出现奇怪的错误。

我已将两个 UINavigationController 嵌入到根 UIViewController 中。

我基本上是在尝试这样做,所以当按下 > 按钮时,它会推送到“视图控制器”。

任何想法为什么我会收到以下错误?:

*** Terminating app due to uncaught exception 'NSGenericException', reason: 'Push segues can only be used when the source controller is managed by an instance of UINavigationController.'

这是我的故事板:

http://cl.ly/image/3K0s3J1U1A3W

我正在像这样进入 RecordViewController:

    RecordViewController *record = [self.storyboard instantiateViewControllerWithIdentifier:@"RecordView"];
    [self presentViewController:record animated:YES completion:nil];

【问题讨论】:

  • 为什么会有两个 NavigationController?你是如何触发 segue 的?
  • 你不应该有第二个导航控制器。只需从 RecordViewController 推送到 ViewController。
  • 您的第二个导航控制器似乎没有意义。将其从RecordViewController 直接推到ViewController。还请记住,您不能推送导航控制器,只能通过呈现而不是推送来显示它
  • 我尝试这样做并得到同样的错误 - @spassas
  • 请抄送我的最后一条消息@rdelmar

标签: ios objective-c uiviewcontroller storyboard


【解决方案1】:

如果你想将视图控制器推送到呈现的视图控制器,那么你呈现的视图控制器必须是UINavigationController。在您的情况下,给最左边的导航控制器一个标识符(即RecordNavigationController)并将您的代码转换为:

UINavigationController *recordNavigationController = (UINavigationController*)[self.storyboard instantiateViewControllerWithIdentifier:@"RecordNavigationController"];
[self presentViewController:recordNavigationController animated:YES completion:nil];

【讨论】:

    猜你喜欢
    • 2018-07-27
    • 2015-11-10
    • 2018-02-08
    • 1970-01-01
    • 2012-11-12
    • 2012-08-04
    • 2012-01-15
    • 1970-01-01
    • 2012-04-07
    相关资源
    最近更新 更多