gpt4 book ai didi

ios - Swift IOS 在弹出后保持 View Controller 在后台运行

转载 作者:搜寻专家 更新时间:2023-11-01 07:14:00 25 4
gpt4 key购买 nike

我的应用包含两个 View 。第一个是 GMSMapView,第二个用于连接到发送坐标的蓝牙设备。

连接蓝牙设备后,我使用委托(delegate)将信息发送回 map View 并四处移动标记。为了在我之前使用 segues 的 View 之间转换,这并没有停止蓝牙 View Controller ,并且数据按照我希望的方式传输到 map View 。

我遇到了重新启动 map View 的问题,所以我决定使用导航 Controller 。现在我使用 push segue 进入我的第二个 View ,然后使用 pop 返回到第一个 View 的相同实例。太好了,成功了!我现在遇到的问题是弹出第二个 View 似乎完全阻止它像以前那样在后台运行。有没有办法让它像以前一样在后台运行?

我目前用来弹出第二个 View 的是

self.navigationController?.popViewControllerAnimated(true)

任何想法将不胜感激!谢谢!

最佳答案

弹出 View Controller 不会“停止运行”。它被退还给你,如果你不保留它,它就会被彻底销毁

如果您不希望这种情况发生,请在归还时保留它。您目前正在忽略返回的 View Controller :

 self.navigationController?.popViewControllerAnimated(true)

相反,保留对它的引用:

self.mySecondViewController = 
self.navigationController?.popViewControllerAnimated(true)

但是请注意,这是一个非常不寻常的架构。您将无法使用 Storyboard segue 再次推送,因为它会推送不同的副本。最好完全放弃您的导航 Controller 架构,因为它完全不适合弹出后 View Controller 持久存在的想法。如果您想要一个两个 View Controller 同时存在的架构,您最好使用 UITabBarController — 或者,更好的是,完全 重组您的应用程序。您需要 View Controller 在弹出后保持不变的想法是一种“难闻的气味”:这意味着您将功能放在了错误的位置。将功能放在一个确实持久存在的地方,而不是强制 View Controller 以某种人为的方式持久存在。

关于ios - Swift IOS 在弹出后保持 View Controller 在后台运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43260955/

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