如何在iOS中暂停/恢复/取消活动

时间:2018-05-30 11:22:18

标签: ios swift events uitabbarcontroller pause

我有一个UITabBarController,有时在didSelectItem委托中,我需要暂停事件并弹出一个弹出窗口。如果用户确认事件已恢复,则不会,事件将被取消。这是我的代码:

class YC_TabBarController: UITabBarController {

    var prevIndex: Int!
    var exitAction: (()->Bool)?

    override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {
        self.prevIndex = self.selectedIndex

        if self.prevIndex == 2 {

            guard self.exitAction != nil else {return}
            //pause
            let isExitAccepted: Bool = self.exitAction!()
            //if true -> resume
            //if false -> prevent from switching tab

        }

    }
}

我该怎么做?请帮忙

1 个答案:

答案 0 :(得分:2)

您应该在第一个视图控制器中向UITabBarControllerDelegate确认,并在return false中选择所需的视图控制器shouldSelect viewController。然后你应该显示你的弹出视图。在弹出视图确定/确认按钮中,您可以更改self.tabBarController

的选定视图控制器
class ViewController: UIViewController,UITabBarControllerDelegate {

    override func viewDidLoad() {
        super.viewDidLoad()
        self.tabBarController?.delegate = self
    }

    func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {
        if viewController is SecondViewController {
            //show alert
            return false
        } else {
            return true
        }
    }
    func popUpOkAction(_ sender:UIButton) {
        if let secVC = self.tabBarController?.viewControllers?.first(where: { $0 is SecondViewController }) {
            self.tabBarController?.selectedViewController = secVC
        }
    }
}
  

如果要从多个视图控制器执行此操作而不是   firstViewController你可以确认到UITabBarControllerDelegate   YC_TabBarController本身。