gpt4 book ai didi

swift - 在 Interface Builder 中设计自定义 View

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

这是我第一次使用自定义 View ,我很困惑如何继续。

我有一个自定义 View ,继承自 NSView,上面只有 3 个内容:一个 ImageView 和 2 个文本字段:

// MyCustomView.swift
import Cocoa

@IBDesignable class MyCustomView: NSView {
@IBOutlet weak var imageView: NSImageView!
@IBOutlet weak var titleField: NSTextField!
@IBOutlet weak var subtitleField: NSTextField!

override func draw(_ dirtyRect: NSRect) {
super.draw(dirtyRect)
}
}

我添加了一个 XIB 文件,设计了 View 并连接了所有 socket :

MyCustomView.xib

现在我的主 Storyboard添加了一个通用 View ,将其类更改为 MyCustomView 并连接了 socket 。这是 ViewController.swift 的代码:

// ViewController.swift
import Cocoa

class ViewController: NSViewController {
@IBOutlet weak var customView: MyCustomView!

override func viewDidLoad() {
super.viewDidLoad()
customView.titleField.stringValue = "This is a title"
}
}

在运行时,我在 customeView.titleField.stringValue = ... 行上遇到了 fatal error :

fatal error: unexpectedly found nil while unwrapping an Optional value

如果我删除该行,应用程序会编译,但自定义 View 为空白。

所以我猜我的自定义设计没有继承自 MyCustomView.xib?我该如何纠正这个问题?我仔细检查了一下,所有 socket 都连接在 IB 中。

最佳答案

  1. 您的类是否在 UIView MyCustomView 的身份检查器中?
  2. IBOutlet 链接是否正确设置为 MyCustomView? (你的 Storyboard一侧)
  3. XIB 的文件所有者是否设置为 MyCustomView
  4. 您有 MyCustomView 的初始化程序吗? (覆盖 init(frame: CGRect) 或必需的 init?(coder aDecoder: NSCoder) )

关于swift - 在 Interface Builder 中设计自定义 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45526906/

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