据我所知,这可以在Objective-C中使用:
self.window.rootViewController.class == myViewController
如何检查当前视图控制器是否是特定的视图控制器?
mc0*_*c01 71
要检查Swift中的类,请使用"is"(如"Swift编程指南"中的"类型转换"一章中的"检查类型"中所述)
if self.window.rootViewController is MyViewController {
    //do something if it's an instance of that class
}
小智 43
针对swift3编译器进行了更新,使其更加贴合!和?
if let wd = UIApplication.shared.delegate?.window {
        var vc = wd!.rootViewController
        if(vc is UINavigationController){
            vc = (vc as! UINavigationController).visibleViewController
        }
        if(vc is LogInViewController){
            //your code
        }
    }
Kir*_*apa 18
如果使用导航控制器,则可以轻松迭代视图控制器.然后您可以检查特定实例:
if let viewControllers = navigationController?.viewControllers {
    for viewController in viewControllers {
        // some process
        if viewController.isKindOfClass(MenuViewController) {
            println("yes it is")
        }
    } 
}
小智 10
我必须在AppDelegate中找到当前的viewController.我用过这个
//at top of class
var window:UIWindow?
// inside my method/function
if let viewControllers = window?.rootViewController?.childViewControllers {
    for viewController in viewControllers {
        if viewController.isKindOfClass(MyViewControllerClass) {
            println("Found it!!!")
            }
        }
    }
要取消Thapa的答案,你需要在使用之前转换到viewcontroller类...
Run Code Online (Sandbox Code Playgroud)if let wd = self.view.window { var vc = wd.rootViewController! if(vc is UINavigationController){ vc = (vc as! UINavigationController).visibleViewController } if(vc is customViewController){ var viewController : customViewController = vc as! customViewController
斯威夫特3
不确定你们,但我很难用这个.我做了这样的事情:
if let window = UIApplication.shared.delegate?.window {
    if var viewController = window?.rootViewController {
        // handle navigation controllers
        if(viewController is UINavigationController){
            viewController = (viewController as! UINavigationController).visibleViewController!
        }
        print(viewController)
    }
}
我一直得到我的应用程序的初始视图控制器.出于某种原因,它想要保留根视图控制器,无论如何.所以我只创建了一个全局字符串类型变量,currentViewController并在每个变量中设置其值viewDidLoad().我所需要的只是告诉我在哪个屏幕上,这对我来说非常适合.
斯威夫特 4、斯威夫特 5
let viewController = UIApplication.shared.keyWindow?.rootViewController
if viewController is MyViewController {
}
| 归档时间: | 
 | 
| 查看次数: | 107058 次 | 
| 最近记录: |