我想提醒用户保存当前视图控制器的变化如何在离开TabBarController中的当前ViewController之前显示警报?
比方说,我有这样的事情:
这里,里面TabBarController和导航控制器里面我有一个“收藏夹”选项卡。我想要显示警报,如果用户切换到“联系人”
问题是警报显示在目标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塞格。这个想法只是问“保存还是不保存?”,如果“保存”,然后做一些东西,并继续切换标签,如果“不保存” - 切换标签立即。
谢谢你的帮助。如果在Obj-C中有一个解决方案,请也回答,我会试着去理解这个想法。
从ViewWillDisappear方法调用警报。 – iMuzahid
是的,你可以在我的问题中看到这个尝试)) –