swift - 弹出 ViewController 后如何检查堆栈顶部的 ViewController 是否是特定的?

标签 swift uiviewcontroller uinavigationcontroller

假设我目前在 BaseViewController 上。我可以从另外 2 个 View Controller (例如 A 和 B)访问这个 View Controller 类。那么,当我弹出 BaseViewController 时,如何检查 A 或 B 是否存在于堆栈顶部?下面是我的代码(在 BaseViewController 内):

func goToAOrBViewController {
   // If after popping viewController is A do this
   navigationController.popViewController(animated: true)
   // Id after popping viewController is B do this
   // Instantiate B and push it
}

最佳答案

有很多方法可以做到这一点

第一个也是最简单的方法

    func visibleViewController() -> UIViewController? {
        let appDelegate = UIApplication.shared.delegate
        if let window = appDelegate!.window {
            return window?.visibleViewController
        }
        return nil
    }

    func goToAOrBViewController {
       // If after popping viewController is A do this
       navigationController.popViewController(animated: true)
       if visibleViewController() == viewControllerA{
           //Do stuff for A
       }else{
           //Do stuff for B
       }
    }

第二种明显的方法

    let topController = UIApplication.sharedApplication().keyWindow?.rootViewController
    if topController == viewControllerA {
        //Do stuff for A
    }else{
        //Do stuff for B
    }

关于swift - 弹出 ViewController 后如何检查堆栈顶部的 ViewController 是否是特定的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58162067/

相关文章:

objective-c - 插入 UINavigationController 堆栈的 UIViewController 丢失 UIAppearance 设置

swift - 如何使用在不同约束之间进行插值的自动布局执行交互式动画?

iOS 11 float TableView 标题

ios - Swift 中 Segue Unwind 的解决方法未触发

ios - 获取用户输入并将其显示在 Swift 的多个 View Controller 中?

ios - ScrollView 无法正确调整大小

ios - 导航 Controller 在多个 Storyboard 中不起作用

ios - 通过委托(delegate)发送数据

json - 如何让 JSONDecoder 解析这种格式? (yyyy-MM-dd'T'HH :mm:ss. SSSSSSS)

ios - 我如何关闭模态转场然后将转场推送到新的 View Controller