我试图通过实例化源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
答案 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