Как инициализировать подкласс NSTableRowView?

Компилятор падает в строке 3, и я не могу найти информацию об инициализаторах NSTableRowView в любом месте

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

1 ответ

Решение

Первый, 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")
    }
}
Другие вопросы по тегам