gpt4 book ai didi

ios - Swift 中的 UIView 子类 : IBOutlet is found nil while unwrapping

转载 作者:搜寻专家 更新时间:2023-10-30 22:15:10 24 4
gpt4 key购买 nike

我正在尝试通过子类化 UIView 在 Swift 中创建自定义 View ,并且我有一个名为 MyViewPanel.xib 的 View 板,其类已分配给 我的自定义 View 。实现如下:

import UIKit
@IBDesignable
class MyCustomView: UIView {
@IBOutlet weak var title: UILabel!

var question: Question {
didSet {
print("did set question, title is: \(question.title)")
}
}

override init(frame: CGRect) {
super.init(frame: frame)
}


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

override func drawRect(rect: CGRect) {
let height = rect.height
let width = rect.width
let color: UIColor = UIColor.whiteColor()

let drect = CGRect(x: (width * 0.25), y: (height * 0.25), width: (width * 0.5),height: (height * 0.5))
let bpath: UIBezierPath = UIBezierPath(rect: drect)
color.set()
bpath.stroke()
}

override func awakeFromNib() {
super.awakeFromNib()
print("awake from nib!")
self.title.text = "Test title" // error: found nil while unwrapping an Optional Value
}
}

在运行过程中,我遇到了以下错误:

fatal error: unexpectedly found nil while unwrapping an Optional value

由于 awakeFromNib()UIView 中的第一个生命周期事件,我不明白为什么 title UILabel 在这种情况下为 nil .

编辑:

要使用这个自定义 View ,我只需在 Storyboard上绘制一个 UIView 矩形并将其类分配给 MyCustomView。在 Storyboard的 ViewControllerviewDidLoad() 方法中,我在自定义 View 上设置了问题:

override func viewDidLoad() {
// myCustomView is an IBOutlet in the view controller
myCustomView.question = question
}

最佳答案

代码部分看起来不错,但这表明接口(interface)生成器中的 socket 连接不正确。在界面生成器的导出部分,您可以看到标题导出已连接,并且没有显示表示错误的感叹号。此外,代码中的 IBOutlet 行旁边应该有一个实心圆圈,以指示 socket 已正确连接并且该类已从界面构建器正确分配。

关于ios - Swift 中的 UIView 子类 : IBOutlet is found nil while unwrapping,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34700075/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com