gpt4 book ai didi

ios - 为 segue 做准备没有按预期工作

转载 作者:可可西里 更新时间:2023-11-01 00:40:57 24 4
gpt4 key购买 nike

我想使用 performSegue 移动到另一个 View ,如下所示

self.performSegue(withIdentifier: "successRegistration", sender: nil)

我想在我的目标 View 中显示一个警报,所以我重写了下面的准备功能

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "successRegistration" {
loginModel.alert(fromController: self)
print("working")
}
}

但是 prepare 函数似乎不起作用,因为 working 没有打印到控制台

我尝试删除我的 prepare 函数并更改我的 performSegue 如下

self.performSegue(withIdentifier: "successRegistration", sender: self.loginModel.alert(fromController: self))

上面的行确实打印了警报,但没有带我到另一个 View 。

如何在转到另一个 View 后显示警报?

最佳答案

在 prepare 的目标 View Controller 上显示警告会导致:

"Attempt to present UIAlertController on SecondViewController whose view is not in the window hierarchy!"

要实现您想要的效果,您只需在第二个 View Controller 类中添加一个变量并将其默认为 false

//In your second view controller
var shouldPresentAlertOnOpen: Bool = false

然后您可以添加逻辑以在该 View Controller 的 viewWillAppear 方法中显示您的警报,如下所示:

//Still in your second view controller
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)

if shouldPresentAlertOnOpen {
//Present your alert here
let alert = UIAlertController(title: "My Alert", message: "My awesome message", preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "OK", style: .default, handler: nil))
self.present(alert, animated: true, completion: nil)
}
}

现在回到您的第一个 View Controller ,您可以将准备方法更新为:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "successRegistration" {
let destinationVC = segue.destination as! SecondViewController
destinationVC.shouldPresentAlertOnOpen = true
}
}

请注意,SecondViewController 应该更新为您的第二个 View Controller 类。

我很确定还有其他方法可以做到这一点,这只是我的方法。

关于ios - 为 segue 做准备没有按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43758928/

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