在App委托swift中获取UIVIewController的名称

时间:2018-05-28 22:07:15

标签: ios swift uiviewcontroller uinavigationcontroller appdelegate

目前我实现的Reachability是AppDelegate.swift文件。这是我确定何时连接或断开互联网的代码

@objc func reachabilityChanged(note: Notification) {
    let reachability = note.object as! Reachability
    if (reachability.connection != .none) {
    }
    else
    {
        currentView()
    }

}

此代码可以正常检测互联网是连接还是断开连接。 现在,如果互联网断开,我想知道我当前在导航控制器中的哪个viewController,我想修改该viewController的UI,以通知用户互联网已断开连接。我试图使用以下代码在我的navigationStack中获取当前的viewController,但它不起作用

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)
    }
}

1 个答案:

答案 0 :(得分:1)

我建议您使用NotificationCenter并向观察者发送通知,以便在屏幕上显示视图时执行您想要的操作。在发送通知时,让您的VC观察者和实施选择器。

如果您不知道如何检查视图是否在屏幕上,请检查此答案: How to tell if UIViewController's view is visible