2016-08-14 3 views
1

Вот вопрос, на который я не могу найти никаких советов (возможно, из-за моего плохого английского во время поиска в сети: отсюда и плохого названия!).Выход NSTableView подклассифицирован в NSOutlineView в коде?

У меня есть подкласс NSTableView в xib, который используется несколько раз в разных окнах. Но в одном из этих окон я хочу, чтобы tableView вел себя как NSOutlineView (но также извлекал выгоду из приятных функций, которые я добавил). Я не хочу просто создавать подкласс outlineView и копировать весь код из подкласса tableView к нему, так как я хочу повторно использовать тот же код (упрощенное обслуживание кода) и xib. Как мне это сделать?

Джош

+0

Try создания категория, которая предоставляет функции по умолчанию, которые могут соответствовать вашим классам. –

+0

категорий как таковых не существует в Свифте; вы имеете в виду расширения протокола? И если это так, он не может использовать какие-либо хранимые свойства задействованных классов – BaseZen

ответ

0

Если подкласс не имеет дополнительных свойств хранимых, и вам не нужно переопределить инициализаторами, объявлять методы в оговорке удлинительного NSTableView вместо подкласса:

extension NSTableView { 
    func forAllSubclassesOfNSTableView() { /* etc. */ } 
} 


let ov = NSOutlineView() 
ov.forAllSubclassesOfNSTableView() // Works 
+0

, но на самом деле мой подкласс действительно имеет множество свойств и инициализаторы. На самом деле это не только NSTableView, но и NSView, который содержит несколько объектов: кнопки, метки + этот вид таблицы. Когда я использую этот NSView в окне, я просто хочу сказать его TableView: «Эй, на этот раз, я хочу, чтобы вы вели себя как outlineView». Имеет ли это смысл? – Joshua

Смежные вопросы