我正在尝试使用始终相同的自定义视图来实现NSStackView。所以我已经定义了我的xib文件,链接了我的类中的所有内容,关联了类,...但是我确信我遗漏了一些东西,因为视图中的内容没有显示出来。非常感谢您的帮助。
我的故事板:

我的xib文件:

当我运行以下代码时的结果:

我的文件是这样的:
class CustomView: NSView, NSTableViewDelegate, NSTableViewDataSource {
@IBOutlet weak var segmentControlOutlet: NSSegmentedControl!
@IBOutlet weak var tableViewOutlet: NSTableView!
}
class ViewController: NSViewController, NSStackViewDelegate {
@IBOutlet weak var stackViewOutlet: NSStackView!
override func viewDidLoad() {
super.viewDidLoad()
stackViewOutlet.delegate = self
let newView = CustomView()
stackViewOutlet.addArrangedSubview(newView)
}
override var representedObject: Any? {
didSet {
// Update the view, if already loaded.
}
}
}发布于 2020-03-29 05:31:27
我已经找到了答案,你需要正确地初始化视图。为此,请执行以下操作:
class CustomView: NSView, NSTableViewDelegate, NSTableViewDataSource {
@IBOutlet var viewOutlet: NSView!
@IBOutlet weak var segmentControlOutlet: NSSegmentedControl!
@IBOutlet weak var tableViewOutlet: NSTableView!
override init(frame frameRect: NSRect) {
super.init(frame: frameRect)
Bundle.main.loadNibNamed("CustomView", owner: self, topLevelObjects: nil)
addSubview(viewOutlet)
viewOutlet.frame = self.bounds
viewOutlet.autoresizingMask = [.height, .width]
}
required init?(coder: NSCoder) {
super.init(coder: coder)
Bundle.main.loadNibNamed("CustomView", owner: self, topLevelObjects: nil)
addSubview(viewOutlet)
viewOutlet.frame = self.bounds
viewOutlet.autoresizingMask = [.height, .width]
}
override func draw(_ dirtyRect: NSRect) {
super.draw(dirtyRect)
// Drawing code here.
}
}当您加载nib名称时,"CustomView“是您的xib文件的名称;)
https://stackoverflow.com/questions/60903332
复制相似问题