2015-06-06 5 views
0

Я бы хотел обработать щелчки на флажках в NSOutlineView. Флажки Ячейки ящика типа NSButtonCell. я в состоянии установить начальное состояние:Как обрабатывать флажки в ячейках NSOutlineView

optional func outlineView(_ outlineView: NSOutlineView, 
          willDisplayCell cell: AnyObject, 
          forTableColumn tableColumn: NSTableColumn?, 
          item item: AnyObject) 

Теперь, как я могу выполнить функцию, когда изменяется состояние проверки коробки? Я искал в Интернете, но я не могу узнать.

ответ

0

Я нашел это, чтобы установить значения из таблицы:

DragNDropOutlineView: implementing drag and drop in an NSOutlineView

// Optional method: needed to allow editing. 
- (void)outlineView:(NSOutlineView *)ov setObjectValue:(id)object forTableColumn:(NSTableColumn *)tableColumn byItem:(id)item { 
AAPLSimpleNodeData *nodeData = [item representedObject]; 

// Here, we manipulate the data stored in the node. 
if ([[tableColumn identifier] isEqualToString:COLUMID_IS_SELECTABLE]) { 
    nodeData.selectable = [object boolValue]; 
} 

}

Другой способ установить цель и действие каждой ячейки:

optional func outlineView(_ outlineView: NSOutlineView, 
         willDisplayCell cell: AnyObject, 
         forTableColumn tableColumn: NSTableColumn?, 
         item item: AnyObject) 
1

Вам необходимо перезагрузить элемент, соответствующий ячейке флажка. Пожалуйста, взгляните на этот API https://developer.apple.com/library/mac/documentation/Cocoa/Reference/ApplicationKit/Classes/NSOutlineView_Class/#//apple_ref/doc/uid/20000110-SW7

+0

Извините, я не понимаю, что это касается моего вопроса. ^^ ' – Phoenix

+0

Вам нужно обработать действие из флажка. Вы можете сделать это двумя способами. 1) Вы можете просто сделать IBAction в своем xib из своей ячейки на ваш контроллер или сделать это в программном порядке. Когда вы активируете свою ячейку ящика, обновите свой модальный статус на основе состояния и перезагрузите элемент –

+0

IB не позволяет мне перетаскивать из ячейки ... – Phoenix