Я довольно новичок в кодировании.Я не уверен, должен ли IBOutlet (кнопка, текстовое поле и т. Д.), Перетаскиваемый ctrl из xib, идти в класс NSView xib или в контроллер представления, в который NSView добавлен как подпредставление.
какое-то время играл с этим, учась на ходу.Я застрял в удивлении, правильно ли я структурировал код.Это для MacOS, поэтому ресурсы ограничены и часто устарели.Я предположил бы, что розетка, добавленная для кнопки, например, войдет в контроллер, поскольку представления должны быть "немыми".Если я пытаюсь, чтобы действия всегда имели «действие», установленное автоматически, и набираю «Любой» по умолчанию - не то, что я привык видеть.Я подозреваю, что это может быть связано с набором классов для владельца файла и набором классов для представления в IB.Если кто-то может наметить лучший способ справиться с этим, который был бы фантастическим, спасибо!
Представление, загружающее xib:
class View4: NSView {
@IBOutlet weak var view: View4!
override init(frame frameRect: NSRect) {
super.init(frame: frameRect)
Bundle.main.loadNibNamed("View4", owner: self, topLevelObjects: nil)
self.frame = self.bounds
self.wantsLayer = true
self.translatesAutoresizingMaskIntoConstraints = false
self.layer?.backgroundColor = NSColor.purple.cgColor
self.roundedCorners(on: self)
// add xib to custom NSView subclass
self.addSubview(self.view)
}
required init?(coder: NSCoder) {
super.init(coder: coder)
}
override func draw(_ dirtyRect: NSRect) {
super.draw(dirtyRect)
// Drawing code here.
}
}
Соответствующий ViewController:
class View4Controller: NSViewController {
override func loadView() {
print("View4Controller.loadView")
self.view = NSView()
}
override func viewDidLoad() {
super.viewDidLoad()
// Do view setup here.
print("View4Controller.viewDidLoad")
self.view = View4()
}
}