我在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'
答案 0 :(得分:1)
这行代码位于xyz.swift
let navigationController = window?.rootViewController as? UINavigationController // Use of Unresolved identifier 'window'
您没有为window
提供任何背景信息,因此预计会出现在此类或全局变量中。
这更接近:
navigationController = AppDelegate.window?.rootViewController as? UINavigationController
并且您似乎意识到需要在AppDelegate实例中引用窗口变量,但是您使用的语法引用静态变量,窗口是成员变量。
我建议你仔细阅读快速手册并更好地理解变量范围并检查:
答案 1 :(得分:1)
您可能需要执行以下操作:
var appDelegate = UIApplication.sharedApplication().delegate as AppDelegate
let navigationController = appDelegate.window?....
正如@Dave Durbin所指出的那样,你试图将一个类中定义的变量用于另一个类而不引用定义类。