应用程序无法以编程方式快速导航到目标VC

时间:2018-07-30 02:19:50

标签: ios swift

我试图通过实例化源VC(ConversationsListVC)作为根导航控制器VC,然后实例化目的地,以编程方式从ConversationVC(源)导航到self(目的地) VC,以便我可以推动导航。

我将打印语句放入控制台(请参见下文),但该应用程序无法导航到目标VC,该应用程序不会崩溃或引发任何错误。我在这里想念什么?

debug 1
debug 2

功能:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

    print("debug 1")

    var window: UIWindow!

    guard let convoVC = storyboard?.instantiateViewController(withIdentifier: "ConversationVC") as? ConversationVC else { return }

    window?.rootViewController = UINavigationController(rootViewController: self)

    navigationController?.pushViewController(convoVC, animated: true)

    print("debug 2")


}//end func

2 个答案:

答案 0 :(得分:0)

尝试这一操作,可能是窗口实例不正确。

let storyBoard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
        let newViewController = storyBoard.instantiateViewController(withIdentifier: "ConversationVC") as! ConversationVC
        navigationController?.pushViewController(newViewController, animated: true)

并确保为您的ViewController分配了标识符

答案 1 :(得分:0)

您不能只是随机创建一个新的UINavigationController并将目的地推送到该位置。您需要将目标VC推送到当前嵌入UINavigationController的{​​{1}}上。

如果self已经嵌入self中,请执行以下操作:

UINavigationController

如果源VC未嵌入在self.navigationController?.pushViewController(convoVC, animated: true) 中,则需要在情节提要中进行。

由于使用的是故事板,因此您还可以考虑在源和目标之间添加推送序列,并执行该序列:

UINavigationController