gpt4 book ai didi

ios - 如何使用 .xib 以编程方式创建 View ?

转载 作者:行者123 更新时间:2023-11-28 11:15:46 25 4
gpt4 key购买 nike

我有一个简单的想法 - 假设我们有一个类似于本地通知的单例对象 - 当它被调用时,它应该在当前窗口显示消息 View ,无论用户现在在哪里。消息 View 包含在 .xib 中并获取下一个代码

@IBDesignable class MessageView : UIView {

var view: UIView!

var nibName: String = "MessageView"

@IBOutlet weak var messageLabel: UILabel?
@IBOutlet weak var closeButton: UIButton?

@IBInspectable var message : String? {
get {
return messageLabel?.text
}
set {
messageLabel?.text = newValue
}
}

@IBInspectable var type : MessageType = .Info

// init

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

setup()
}

required init(coder aDecoder: NSCoder) {
// properties
super.init(coder: aDecoder)
setup()
}

@IBAction func closeButtonTouched(sender: UIButton) {
self.view.hidden = true
}

func setup() {
view = loadViewFromNib()

view.frame = bounds
view.autoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight

addSubview(view)
}

func loadViewFromNib() -> UIView {
let bundle = NSBundle(forClass: self.dynamicType)
let view = bundle.loadNibNamed(nibName, owner: nil, options: nil)[0] as! MessageView

return view
}
}

当我试图通过 init(frame:) 实例化它时,问题就来了.它在运行时崩溃并显示下一个文本 Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<NSObject 0x174014ce0> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key closeButton.'在 loadNibNamed 方法中。

所以我应该使用 init(frame:)或不?我不明白为什么会出现这个问题。我做了教程中的所有操作,但如果您不以编程方式创建 View ,它就可以工作。

这是有关教程的其他信息的链接 - https://www.youtube.com/watch?v=r5SKUXSuDOw .

最佳答案

作为错误状态,您没有在 .xib 和 closeButton 之间创建正确的连接,因此这与 View 初始化无关。要解决此问题,请打开 .xib 文件,选择关闭按钮并检查连接检查器中是否缺少连接

关于ios - 如何使用 .xib 以编程方式创建 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31918525/

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