UILabel在运行时是零,在模拟器上工作,但在设备上崩溃

时间:2015-09-17 08:50:07

标签: ios uilabel swift2 fatal-error optional

我正在学习Swift 2并将旧的Objective-C代码更改为swift。

我只是在笔尖放了一个UILabel并将它连接到nib的控制器。

该代码适用于模拟器(iOS 8.4和iOS 9),但在设备上崩溃(iPhone 4s和iPhone 5s,均为iOS 8.4),崩溃信息为:fatal error: unexpectedly found nil while unwrapping an Optional value

以下是相关代码:

我的视图控制器中的代码:

var round: Int = 0
@IBOutlet weak var nextRoundLabel: UILabel!

override func viewDidLoad() {
    super.viewDidLoad()

    // Do any additional setup after loading the view.
    self.nextRoundLabel.text = "\(self.round)"
    }
}

推送viewController的代码:

    let rvc = RoundViewController()
    rvc.modalTransitionStyle = UIModalTransitionStyle.PartialCurl
    rvc.round = 1
    self.navigationController?.pushViewController(rvc, animated: true)
错误发生时的

实例:

enter image description here

1 个答案:

答案 0 :(得分:1)

我遇到了与iOS8.4相同的问题。推送视图控制器时,应指定nib名称。为此,在RoundViewController中覆盖init。

override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) {
    super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
}

required init?(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
}

并实现控制器:

    let rvc = RoundViewController(nibName: "RoundViewController")