Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/44.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
NavigationController推送在ios 11中不工作_Ios_Iphone_Swift_Uinavigationcontroller_Presentviewcontroller - Fatal编程技术网

NavigationController推送在ios 11中不工作

NavigationController推送在ios 11中不工作,ios,iphone,swift,uinavigationcontroller,presentviewcontroller,Ios,Iphone,Swift,Uinavigationcontroller,Presentviewcontroller,您好,我有导航堆栈(流),顶部可见视图控制器是M 我正在使用视图控制器A再创建一个新的导航控制器N 现在在M上呈现N 在A中按视图控制器B(self.navigationcontroller) 推送不起作用,并且在现有转换或演示发生时出错;导航堆栈仅在iOS 11中不会更新。 谢谢,您刚才提到的内容不应该造成问题。但下面提到的并不能确定你提到的是什么 在模态演示的完成块中将push B添加到N代码中 present(N, animated: true) { [weak self] N.p

您好,我有导航堆栈(流),顶部可见视图控制器是M

  • 我正在使用视图控制器A再创建一个新的导航控制器N
  • 现在在M上呈现N
  • A中按视图控制器B(self.navigationcontroller)
  • 推送不起作用,并且在现有转换或演示发生时出错;导航堆栈仅在iOS 11中不会更新
    谢谢,

    您刚才提到的内容不应该造成问题。但下面提到的并不能确定你提到的是什么

    在模态演示的完成块中将push B添加到N代码中

    present(N, animated: true) { [weak self]
        N.pushViewController(B, animated: true)
    }
    

    您没有正确遵循导航结构

    从视图控制器M中,您需要显示导航控制器N,如下所示:

    self.navigationController?.present(navN, animated: true, completion: nil)
    
    这里self是视图控制器MnavN是新的导航控制器

    通过执行此操作,它将打开视图控制器A,您需要从这里推送到视图控制器B:

    self.navigationController?.pushViewController(VCb, animated: true)
    

    Self是视图控制器AVCb是新的视图控制器B。

    Swift 3/Swift 4

    首先,您需要设置要显示的导航控制器,然后在第二个视图控制器上执行导航过程

    • 这样的例子

         let firstPresentVC = FirstVC(nibName:"FirstVC",bundle:nil)
         let navVC = UINavigationController(rootViewController:firstPresentVC)
         navVC.isNavigationBarHidden = true
         self.present(navVC, animated: true, completion:nil)
      
    现在,您已在当前的导航堆栈上

    你可以在那之后推

    let secondPushVC = secondPushVC(nibName:"secondPushVC",bundle:nil)
    self.navigationController?.pushViewController(secondPushVC, animated: true)
    

    共享代码或Storybord图像不使用故事板。通过xib并以编程方式实现。ok共享现在在M上呈现N的代码,并在步骤2的(self.navigationcontroller)代码中推送视图控制器B,在
    DispatchQueue.main.async{}中推送3try
    push
    当您尝试在第一个viewcontroller的ViewDiLoad中推送第二个view controller时,会出现此类错误。因为一个转变已经发生了。您的代码可能有助于更好地理解问题。请分享你的代码。