为啥通过动态链接导航后pushViewController 不起作用?
Posted
技术标签:
【中文标题】为啥通过动态链接导航后pushViewController 不起作用?【英文标题】:Why does pushViewController doesn't work after navigating through Dynamic Link?为什么通过动态链接导航后pushViewController 不起作用? 【发布时间】:2020-06-03 09:37:15 【问题描述】:我正在构建一个应用程序,它可以接收 Firebase 的动态链接,并在单击链接后将其重定向到某个 UIViewController
。所以基于我问的question,我在AppDelegate.swift
中有代码,可以将应用程序导航到UIViewController
,如下所示:
func goToDynamicLinkVC() // This function is in AppDelegate.swift
let destinationStoryboard: UIStoryboard = UIStoryboard(name: "DynamicLink", bundle: nil)
let destinationVC = destinationStoryboard.instantiateViewController(withIdentifier: "DynamicLinkView") as? DynamicLinkVC
self.window = UIWindow(frame: UIScreen.main.bounds)
self.window?.rootViewController = destinationVC
self.window?.makeKeyAndVisible()
在UIViewController
中,如果用户按下这样的按钮,我还有一个函数可以移动到另一个UIViewController
:
func routeToDynamicForm() // This function is in DynamicLinkVC class
let destinationVC = UIStoryboard(name: "DynamicLink", bundle: nil).instantiateViewController(withIdentifier: "DynamicFormView") as! DynamicFormVC
self.navigationController?.pushViewController(destinationVC, animated: true)
但奇怪的是,现在我按下按钮并没有将我移动到下一个视图控制器(在这种情况下,DynamicFormVC
)。我试图通过这样做来调试按钮是否工作:
print("button tapped")
它在调试区域显示消息,但它仍然没有重定向到下一个视图控制器。那么我能做些什么来解决这个问题呢?如果您需要更多信息,请随时询问,我会提供给您。谢谢。
【问题讨论】:
self.navigationController
可以为零吗?
@ibrahimyilmaz 你这是什么意思?是这样的吗? self.navigationController = nil
没有。如果您的 viewController 不在 navigationController 中,则此行永远不会运行:self.navigationController?.pushViewController(destinationVC, animated: true)
【参考方案1】:
我将goToDynamicLinkVC
函数更改为如下内容:
func goToDynamicLinkVC() // This function is in AppDelegate.swift
let destinationStoryboard: UIStoryboard = UIStoryboard(name: "DynamicLink", bundle: nil)
let destinationVC = destinationStoryboard.instantiateViewController(withIdentifier: "DynamicLinkView")
let navController = UINavigationController()
navController.setViewControllers([destinationVC], animated: true)
self.window?.rootViewController = navController
【讨论】:
以上是关于为啥通过动态链接导航后pushViewController 不起作用?的主要内容,如果未能解决你的问题,请参考以下文章
当应用程序已在运行且使用 Firebase 动态链接时导航不起作用