为啥通过动态链接导航后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 动态链接时导航不起作用

为啥列表中带有导航链接的项目变成蓝色?

为啥我的导航栏链接的颜色不会改变[重复]

我想在左侧设置徽标,在右侧设置链接,但浮动在导航标签上不起作用......为啥?

为啥 Angular 组件未在浏览器后退/前进导航上加载?

为啥我不能直接在 iOS 中的任何地图应用程序上进行深度链接以进行轮流导航? [关闭]