我的应用程序委托中有一个函数,当从Siri快捷方式调用时,该函数应该推入View Controller。
func pushNewView() {
if let wind = UIApplication.shared.delegate?.window {
if let rootViewController = wind?.rootViewController {
let viewToPush = TripTableViewController()
if let alreadySomeOneThere = rootViewController.presentedViewController {
alreadySomeOneThere.navigationController?.pushViewController(viewToPush, animated: true)
} else {
rootViewController.navigationController?.pushViewController(viewToPush, animated: true)
}
}
}
}
当我从AppDelegate调用pushNewView()
时,什么都没有发生。
如果我提供视图控制器而不是推送视图控制器,那确实可行,但我希望推送视图控制器。
我没有使用任何故事板,我的所有代码都是程序性的。
有人知道如何使此功能成功推送视图控制器吗?
答案 0 :(得分:1)
什么也没发生,因为alreadySomeOneThere
和rootViewController
都没有嵌入导航控制器中。
为了推送另一个视图控制器,需要有一个现有的导航控制器。
您需要执行以下两项操作之一。重做您的设置,以将alreadySomeOneThere
和rootViewController
嵌入导航控制器中,或者您需要从alreadySomeOneThere
或rootViewController
展示新的视图控制器。
请注意,您不能按导航控制器。如果您选择将alreadySomeOneThere
和rootViewController
放在导航控制器中,则只需按viewToPush
。不要创建其他导航控制器。
如果您决定从alreadySomeOneThere
或rootViewController
展示新的视图控制器,则根据viewToPush
的需要,您可能需要也可能不需要嵌入viewToPush
它自己的导航控制器。