2016-01-06 3 views
1

У меня есть простой NSOutlineView, init через swift, с 2 столбцами. Я сделал следующий очень простой источник данных, надеясь проверить его таким образом, но, возможно, этот формат недопустим. Я предполагаю, что при просмотре таблицы только запросы, так что это не вызовет бесконечный цикл.NSOutlineView не допускает расширения

В результате получается таблица с четырьмя строками, 2 столбиками с «Name» и «Value», но без кнопок расширения.

Я реализовал isExpandable, как упоминалось в сообщении Obj-C с похожим именем, и добавил столбцы.

Есть ли что-то еще, что мне нужно сделать, чтобы настроить NSOutlineView с возможностью расширения элементов, или я должен попытаться еще более реалистичный тест DataSource:

import Cocoa 

class OutlineDataSource : NSObject,NSOutlineViewDataSource 
{ 
    var a = "Name" 
    var b = "Value" 

    var column1 : NSTableColumn 
    var column2 : NSTableColumn 

    init(column1:NSTableColumn,column2:NSTableColumn) { 
     self.column1 = column1 
     self.column2 = column2 
    } 

    func outlineView(outlineView: NSOutlineView, numberOfChildrenOfItem item: AnyObject?) -> Int 
    { 
     return 4; 
    } 

    func outlineView(outlineView: NSOutlineView, child index: Int, ofItem item: AnyObject?) -> AnyObject 
    { 
     return a 
    } 

    func outlineView(outlineView: NSOutlineView, isItemExpandable item: AnyObject) -> Bool 
    { 
     return true; 
    } 

    func outlineView(outlineView: NSOutlineView, objectValueForTableColumn tableColumn: NSTableColumn?, byItem item: AnyObject?) -> AnyObject? 
    { 
     if (tableColumn == column1) 
     { 
      return a 
     } 
     return b 
    } 
} 

ответ

1

outlineTableColumn должен быть установлен на виде набросков.

+0

Это абсолютно важная часть работы NSOutlineView, и документация Apple не обращает внимания на их страницу NSOutlineView. Они идут о делегате представления и источнике данных. По крайней мере, при программном создании NSOutlineView вместе с dataSource и NSTableColumn (s) установка этого параметра имеет решающее значение - более важно, чем установка делегата (который я оставил нуль и вижу, что он все еще работает). Опять же, в симптом отсутствуют треугольники и нет возможности расширить элементы, видимые с корневого уровня. Это был правильный ответ для моего дела. – WeakPointer

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