导航pushViewController不起作用

时间:2018-07-08 11:35:33

标签: ios swift uinavigationcontroller

我有登录视图控制器。当用户显示我为此显示弹出窗口时

推荐 https://www.youtube.com/watch?v=S5i8n_bqblE我可以做到。 当我单击按钮导航到下一个视图控制器时,弹出窗口具有按钮 但是当我单击该操作正在执行时它现在可以工作,但是当我犯错时它就不会导航到下一个视图控制器

Singin 

class DigitalGateViewController: NANavigationViewController
{

      @IBAction func singin(_ sender: UIButton)
        {
                    let lv = NAViewPresenter().activityVC()
                    self.present(lv, animated: true)
         }

}

 this is popupviewcontroller 

  class ActivityViewController: NANavigationViewController {



    @IBAction func okbuttonclick() {
           let dv = NAViewPresenter().myGuestListVC()
           // self.navigationController?.pushViewController(dv, animated: true)
            }
    }

它不会迅速推送到textview控制器

2 个答案:

答案 0 :(得分:0)

之所以不推送是因为您以模态呈现它而不是在导航堆栈上推送,因此它没有任何navigationController。如果要从模式弹出窗口中进行推送,则可以访问模式对象上的属性presentingViewController,然后尝试从那里将其推送到navigationController上。

self.presentingViewController?.navigationController?.pushViewController(myVC, animated: true)
dismiss(animated: true, completion: nil)

答案 1 :(得分:0)

当您提供视图控制器时,它以模态显示,并且不会被推入先前的导航控制器的堆栈中。因此,您尝试调用self.navigationController?.pushViewController(),但它不起作用,因为自身(即NAViewPresenter().myGuestListVC())未嵌入导航控制器中。

如果要将新的VC推送到以前的堆栈,则必须退出显示的弹出窗口,然后再推送。最简单的方法是使用委托方法。

编辑:

如果要创建新的navigationController,可以执行以下操作:

let navController = UINavigationController(rootViewController: NAViewPresenter().myGuestListVC())
present(navController, animated: true)

在介绍了navController之后,您可以从现在开始使用self.navigationController.push方法。