gpt4 book ai didi

ios - 如何在 TabBarController 中离开当前 ViewController 之前显示警报?

转载 作者:可可西里 更新时间:2023-11-01 00:59:52 26 4
gpt4 key购买 nike

我正在尝试提醒用户保存对当前 View Controller 的更改

比方说,我有这样的东西:

enter image description here

在这里,在 TabBarController 内部和 Navigation Controller 内部,我有一个“收藏夹”选项卡。如果用户切换到“联系人”,我想显示警报

问题是 Alert 显示在目标 ViewController(联系人)上,因此对用户来说看起来很奇怪。

测试解决方案:

首先,我尝试使用

override func viewWillDisappear(animated: Bool) {
self.leavingAlert()
}
//inside FavoritesViewController

接下来,我尝试了:

class FavoritesViewController: UIViewController, UITabBarControllerDelegate {

override func viewDidLoad() {
super.viewDidLoad()

self.tabBarController?.delegate = self
}

func leavingAlert(){
let alert = UIAlertController(title: "Alert", message: "You forgot to do something here", preferredStyle: UIAlertControllerStyle.Alert)
let alertAction = UIAlertAction(title: "OK", style: UIAlertActionStyle.Default, handler: nil)
alert.addAction(alertAction)
self.presentViewController(alert, animated: true, completion: nil)
}

func tabBarController(tabBarController: UITabBarController, didSelectViewController viewController: UIViewController) {
self.leavingAlert()
}
}

同样的效果

然后,我尝试通过 TabBarViewController 访问事件:

class TabBarViewController: UITabBarController {

override func viewDidLoad() {
super.viewDidLoad()

}

override func tabBar(tabBar: UITabBar, didSelectItem item: UITabBarItem) {
if let navigationController = selectedViewController as? UINavigationController {
if let activeController = navigationController.visibleViewController as? FavoritesViewController {
activeController.leavingAlert()
}
}
}
}

还有一次 - 同样的效果。

请注意,我不会打断这个 UITabBarController Segue。这个想法只是问“保存还是不保存?”,如果“保存”,则做一些事情并继续切换标签,如果“不保存” - 立即切换标签。

感谢您的帮助。如果在 Obj-C 中有解决方案,也请回答,我会尽力捕获这个想法。

最佳答案

您可以创建 delegate对于 UITabBarController 和重载方法:

optional func tabBarController(_ tabBarController: UITabBarController,
shouldSelectViewController viewController: UIViewController) -> Bool

如果用户尝试切换到 viewController(从 FavoritesViewController),您将从此方法返回 false 并显示警报。
在警报的回调之一中,您可以切换到目的地 programmatically .

unowned(unsafe) var selectedViewController: UIViewController?

关于ios - 如何在 TabBarController 中离开当前 ViewController 之前显示警报?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36307276/

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