[英]EXC_BAD_ACCESS on accessing NSButton subclass property from view controller
I'm attempting to access a NSButton subclass property from a view controller, but receive the following error at the HoverButton's setImages method: 我正在尝试从视图控制器访问NSButton子类属性,但在HoverButton的setImages方法中收到以下错误:
EXC_BAD_ACCESS (code=1, adress=0x0)
EXC_BAD_ACCESS(代码= 1,地址= 0x0)
It seems I'm losing reference, but I'm not sure how to maintain reference. 看来我正在失去参考,但是我不确定如何保持参考。 (Still very fresh to Swift & OS X dev)
(对Swift和OS X开发人员来说仍然很新鲜)
In my view controller: 在我的视图控制器中:
@IBOutlet weak var newAccountButton: HoverButton!
@IBOutlet weak var joinAccountButton: HoverButton!
...
let off = NSImage(named: "button-off")!
let over = NSImage(named: "button-over")!
newAccountButton.setImages(imageOriginal: off, imageHover: over)
joinAccountButton.setImages(NSColor.clearColor(), imageOriginal: off, imageHover: over)
... ...
class HoverButton: NSButton {
var trackingArea:NSTrackingArea!
var hoverBackgroundImage: NSImage!
var originalBackgroundImage: NSImage!
override init(frame frameRect: NSRect) {
super.init(frame: frameRect)
// set tracking area
trackingArea = NSTrackingArea(rect: bounds, options: [NSTrackingAreaOptions.MouseEnteredAndExited, NSTrackingAreaOptions.ActiveAlways], owner: self, userInfo: nil)
self.addTrackingArea(trackingArea)
}
required init?(coder: NSCoder) {
super.init(coder: coder)
// set tracking area
trackingArea = NSTrackingArea(rect: bounds, options: [NSTrackingAreaOptions.MouseEnteredAndExited, NSTrackingAreaOptions.ActiveAlways], owner: self, userInfo: nil)
self.addTrackingArea(trackingArea)
}
override func drawRect(dirtyRect: NSRect) {
super.drawRect(dirtyRect)
}
override func mouseEntered(theEvent: NSEvent) {
let cell = self.cell as! NSButtonCell
cell.image = hoverBackgroundImage
}
override func mouseExited(theEvent: NSEvent) {
let cell = self.cell as! NSButtonCell
cell.image = originalBackgroundImage
}
func setImages(imageOriginal: NSImage, imageHover: NSImage) {
self.originalBackgroundImage = imageOriginal
self.hoverBackgroundImage = imageHover
}
}
based off https://github.com/Swift-Kit/JZHoverNSButton (use of which gives same error) 基于https://github.com/Swift-Kit/JZHoverNSButton (使用它会产生相同的错误)
问题是从笔尖或情节提要中的HoverButton实例到newAccountButton
和joinAccountButton
属性没有插座。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.