在 applicationWillEnterForeground 使我的应用程序崩溃后更改 IBOutlets 值
Change IBOutlets values after applicationWillEnterForeground crashes my app
使用:XCode 7,iPhone 5(iOS 8.3),WiFi,可达性(检查互联网连接)。
当我的应用程序处于后台并且我单击以打开我的应用程序时,它会检查连接并加载一些功能,并且在我尝试签名的功能之一中:
imageView.image = UIImage(named: "imagename")
错误:致命错误:在展开可选值时意外发现 nil
仅当我的应用更改 applicationWillEnterForeground 中的 IBOutlet 值并将其功能更改为主视图控制器时才会发生这种情况
self.viewController.functionName()
class AppDelegate: UIResponder, UIApplicationDelegate {
var viewController:ViewController = ViewController()
func applicationWillEnterForeground(application: UIApplication) {
self.viewController.checkConn()
}
}
checkConn() 检查与 Reachability 的连接并更改 IBOutlets 值,如 .image 和 .text
有什么办法可以解决吗?
我假设这就是您的崩溃发生的地方。
imageView.image = UIImage(named: "imagename")
如果您使用 "Images.xcassets" 来管理您的图像文件。确保 "imagename" 存在。
经过大量测试,我发现这个方法非常有效:
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
var viewController:ViewController?
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject : AnyObject]?) -> Bool {
viewController = self.window!.rootViewController as? ViewController
return true
}
func applicationWillEnterForeground(application: UIApplication) {
viewController!.checkConn()
}
}
使用:XCode 7,iPhone 5(iOS 8.3),WiFi,可达性(检查互联网连接)。 当我的应用程序处于后台并且我单击以打开我的应用程序时,它会检查连接并加载一些功能,并且在我尝试签名的功能之一中:
imageView.image = UIImage(named: "imagename")
错误:致命错误:在展开可选值时意外发现 nil
仅当我的应用更改 applicationWillEnterForeground 中的 IBOutlet 值并将其功能更改为主视图控制器时才会发生这种情况 self.viewController.functionName()
class AppDelegate: UIResponder, UIApplicationDelegate {
var viewController:ViewController = ViewController()
func applicationWillEnterForeground(application: UIApplication) {
self.viewController.checkConn()
}
}
checkConn() 检查与 Reachability 的连接并更改 IBOutlets 值,如 .image 和 .text
有什么办法可以解决吗?
我假设这就是您的崩溃发生的地方。
imageView.image = UIImage(named: "imagename")
如果您使用 "Images.xcassets" 来管理您的图像文件。确保 "imagename" 存在。
经过大量测试,我发现这个方法非常有效:
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
var viewController:ViewController?
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject : AnyObject]?) -> Bool {
viewController = self.window!.rootViewController as? ViewController
return true
}
func applicationWillEnterForeground(application: UIApplication) {
viewController!.checkConn()
}
}