ios - 如何在 swift 应用程序中获取 keyWindow 引用?

标签 ios swift

在 Objective-C 的 UIViewController 的 viewDidLoad 方法中,我这样做是为了在我的 iOS 应用程序中获取 keyWindow 引用:

 UIWindow * keyWindow = [[UIApplication sharedApplication] keyWindow];

因此,我将此 View Controller 移植到 Swift 中,并在 viewDidLoad 调用中执行此操作:

let window = UIApplication.sharedApplication().keyWindow

我想了解为什么窗口为零。当我在该行之后放置一个断点时,我会检查控制台中的窗口并得到以下信息:

(lldb) po window
nil

如何在 swift 中让窗口成为​​对我的应用程序的 keyWindow 的有效引用?

最佳答案

我在搜索快速获取窗口时遇到了这个问题。如果你想获得窗口而不是 keyWindow,试试这个(Swift 2):

if let app = UIApplication.sharedApplication().delegate as? AppDelegate, let window = app.window {
    MBProgressHUD.show(text, view:window)
}

为 Swift 3 更新:(感谢@Trevor)

if let app = UIApplication.shared.delegate as? AppDelegate, let window = app.window {
    MBProgressHUD.show(text, view:window)
}

关于ios - 如何在 swift 应用程序中获取 keyWindow 引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24215462/

相关文章:

ios - UINavigationController 转换委托(delegate)

ios - IOS7 更新后 OpenGL Alpha 混合错误

iphone - Action 方法和协议(protocol)方法有什么区别?

ios - 从另一个 CollectionView (Swift) 在 UICollectionView 中添加项目

ios - Swift 中的幻灯片转场

ios - 重定向到 native 邮件应用程序的 AppStore

iphone - Flash 卡住 AVCaptureSession

ios - 加载主视图或单元格时在 UITableViewCell Swift 中运行代码

xcode - TTTAttributedLabel addLinkToURL NSRange 混淆

swift - 向下滚动时显示导航栏