如何解决Xcode 12.0 iOS 13+ UIViewController与viewWillDisappear有关的问题
我有一个为我的朋友写的简单的闪存卡应用程序。我充其量是最爱好的。从本质上讲,Tinder可以将卡翻转成死语。在iOS 13更新之前,一切一直运转良好,Apple再次使用Storyboard来提高灵活性。
我的问题是我退出退出视图时保存用户默认设置的优雅解决方案。当按下另一个屏幕上的按钮时,将调用此“ carddeck”视图控制器。要退出同一视图控制器,请先按下与“动作选择-显示”(而非@IBAction)相关的按钮,该按钮会将视图带回到“ mainview”视图控制器。我尝试使用“模态呈现”进行相同的动作搜索。但没有骰子。
class CardDeckViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// called!
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(true)
// called!
}
override func viewWilldisappear(_ animated: Bool) {
super.viewWilldisappear(true)
// not called when "return" on this screen is pressed;
// however,it still returns to the main screen it just doesn't save the user's score
}
任何帮助将不胜感激。我希望有一个比重做整个故事板更容易的修复程序。我看到有关UIModalPresentFullScreen的信息。我不是Swift专家,所以在这一点上,我认为我会向专业人士伸出援手。希望这太耗时了修复。幸运的是,我认为其他视图不受此影响。
感谢阅读!
解决方法
您可以尝试以下几项操作:
-
听起来您正在再次展示“主视图”视图控制器。不看代码很难说,但我认为您可能应该关闭“ CardDeck”视图控制器,以便返回到“主视图”视图控制器。
-
看看
UIAdaptivePresentationControllerDelegate
。 stackoverflow post涵盖了更改和iOS 13解决方案。 -
我在iOS 12中更改了iOS 12视图控制器生命周期行为时遇到了一些类似的问题。
如果没有其他方法,我建议考虑NotificationCenter。您是从当前的视图控制器进行广播的,因此像AppDelegate
这样的人可以接收到该消息并采取相应措施。它并不总是工作的最佳工具,但在某些情况下可以提供帮助。
- 与您的问题无关,但您对超级
super.viewWillAppear(true)
的调用可能应该是super.viewWillAppear(animated)
,因此您不会忽略方法参数。
答案在这个问题的底部:
Presenting modal in iOS 13 fullscreen
我只需要将情节提要UI属性从“自动”重新定义为“全屏”。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。