gpt4 book ai didi

iOS swift : Pushing two view controllers when app launched from push notification

转载 作者:行者123 更新时间:2023-11-28 10:40:13 25 4
gpt4 key购买 nike

当用户通过推送通知启动应用程序时,我会显示一个 View Controller ,然后推送另一个。我呈现第一个VC的代码如下

let mainStoryBoard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let homeNav: UIViewController = mainStoryBoard.instantiateViewController(withIdentifier: "HomeNavController") as! UINavigationController
let homePageTableVC = mainStoryBoard.instantiateViewController(withIdentifier: String(describing: HomePageTableViewController.self)) as! HomePageTableViewController
homePageTableVC.tipToPresent = tipDay
homeNav.addChildViewController(homePageTableVC)
self.window = UIWindow(frame: UIScreen.main.bounds)
self.window?.rootViewController = homeNav
self.window?.makeKeyAndVisible()

homePageTableVC(在 viewDidLoad 方法中)使用 tipToPresent 属性来呈现第二个 VC,使用以下代码:

if let tipDayToPresent = tipToPresent {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let tipVC = storyboard.instantiateViewController(withIdentifier: String(describing: TipViewController.self)) as! TipViewController
tipVC.dayOfTip = tipDayToPresent
tipToPresent = nil
navigationController?.pushViewController(tipVC, animated: true)
}

这很好用,但是当我按下后退按钮返回到 homePageTableVC 时,导航栏是空白的。通常显示的标题图像、菜单按钮和右侧栏按钮不可见。

感谢任何帮助。

最佳答案

如果@augie 的解决方案有效,那就太好了。我建议您在处理推送通知深层链接时不要更改导航堆栈。它的行为应该与正常应用程序启动时的行为相同。通过这种方式,您无需处理任何边缘情况,也无需设置不同的窗口。

解决方案:每当有人点击推送通知时,关闭所有显示的 Controller 和 popToRootViewController,然后导航到所需的屏幕。

关于iOS swift : Pushing two view controllers when app launched from push notification,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50843037/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com