如何在AppDelegate中定义的其他类中使用变量

时间:2015-05-12 02:30:59

标签: ios swift appdelegate

我在var window: UIWindow?内的AppDelegate.swift文件中有一个变量class AppDelegate,我想在class xyz内的其他类xyz.swift文件中使用,如Get current view controller from the app delegate (modal is possible)中所述但我在第一行收到错误任何帮助将不胜感激。这是来自xyz.swift的代码

func CurrentView() -> UIView
  {
     let navigationController = window?.rootViewController as? UINavigationController // Use of Unresolved identifier 'window'
     if let activeController = navigationController!.visibleViewController {
     if activeController.isKindOfClass( MyViewController )  {
       println("I have found my controller!")
          }
      }
  }

即使我使用let navigationController = AppDelegate.window?.rootViewController as? UINavigationController错误是'AppDelegate.Type' does not have member named 'window'

2 个答案:

答案 0 :(得分:1)

这行代码位于xyz.swift

  let navigationController = window?.rootViewController as? UINavigationController // Use of Unresolved identifier 'window'

您没有为window提供任何背景信息,因此预计会出现在此类或全局变量中。

这更接近:

navigationController = AppDelegate.window?.rootViewController as? UINavigationController

并且您似乎意识到需要在AppDelegate实例中引用窗口变量,但是您使用的语法引用静态变量,窗口​​是成员变量。

我建议你仔细阅读快速手册并更好地理解变量范围并检查:

How do I get a reference to the app delegate in Swift?

答案 1 :(得分:1)

您可能需要执行以下操作:

    var appDelegate = UIApplication.sharedApplication().delegate as AppDelegate
    let navigationController = appDelegate.window?....

正如@Dave Durbin所指出的那样,你试图将一个类中定义的变量用于另一个类而不引用定义类。