У меня проблемы с получением пользовательского элемента управления NSSlider , обновленного в реальном времени в Интерфейсном Разработчике XCode.
Я реализовал @IBDesignable
и prepareForInterfaceBuilder
, как показано во многих других постах и руководствах. Мой маленький тест просто удаляет ручку из ползунка управления.
Вот код, который я использую в данный момент:
import Cocoa
@IBDesignable
class ColorSlider2: NSSlider {
override func setNeedsDisplay(_ invalidRect: NSRect) {
super.setNeedsDisplay(invalidRect)
}
override func awakeFromNib() {
super.awakeFromNib()
setupView()
}
override func prepareForInterfaceBuilder() {
super.prepareForInterfaceBuilder()
setupView()
}
required init?(coder: NSCoder) {
super.init(coder: coder)
}
override init(frame frameRect: NSRect) {
super.init(frame: frameRect)
}
private func setupView() {
if ((self.cell?.isKind(of: ColorSlider2Cell.self)) == false) {
let cell = ColorSlider2Cell()
self.cell = cell
}
self.alphaValue = 0.5
self.floatValue = 0.4
}
}
class ColorSlider2Cell: NSSliderCell {
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
override init() {
super.init()
}
override func drawKnob(_ knobRect: NSRect) {
return
}
}
Предварительный просмотр в Интерфейсном Разработчике не удаляет ни ручку, ни обновление floatValue:
![enter image description here](https://i.stack.imgur.com/VJbZy.png)
![enter image description here](https://i.stack.imgur.com/fdIdW.png)
У вас есть идеи, почему это так?