在applicationWillEnterForeground崩溃我的应用程序后更改IBOutlets值

时间:2015-07-07 14:14:54

标签: ios xcode swift reachability iboutlet

使用:XCode 7,iPhone 5(iOS 8.3),WiFi,可达性(检查互联网连接)。 当我的应用程序处于后台时,我点击打开我的应用程序,它检查conncetion并加载一些功能,并在我尝试签名的一个函数中:

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

有没有办法解决它?

2 个答案:

答案 0 :(得分:2)

经过大量测试后,我发现这种方法效果很好:

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

答案 1 :(得分:0)

我假设这是你的崩溃发生的地方。

imageView.image = UIImage(named: "imagename")

如果您正在使用" Images.xcassets"管理您的图像文件。确保" imagename"存在。