如何初始化NSTableRowView子类?

时间:2016-04-19 20:19:23

标签: cocoa nstablerowview

编译器在第3行崩溃,我无法在任何地方找到有关NSTableRowView初始化器的信息

class ItemRowView: NSTableRowView {
    convenience override init(frame: NSRect) {
        self.init(frame: frame) // EXC BAD ACCESS
        self.draggingDestinationFeedbackStyle = NSTableViewDraggingDestinationFeedbackStyle.None
    }

1 个答案:

答案 0 :(得分:0)

首先,init( frame: NSRect )指定的初始值设定项,因此关键字convenience在这个地方是错误的。 那么你可能想要递归调用super初始值设定项而不是自己的方法。 最后,您需要实现另一个必需的初始化程序init?(coder: NSCoder)

以下代码可以帮助您:

class ItemRowView: NSTableRowView {
    override init(frame: NSRect) {
        super.init(frame: frame) // super - not self
        self.draggingDestinationFeedbackStyle = NSTableViewDraggingDestinationFeedbackStyle.None
    }

    required init?(coder: NSCoder) {
        // Write something useful here, or leave the default implementation
        fatalError("init(coder:) has not been implemented")
    }
}