У меня есть NSTableView с NSTableColumn с NSButtonCell (флажок) внутри него, который генерирует новый экземпляр NSButtonCell каждый раз, когда добавляется строка, которую я настроил в IB. Тем не менее, мне очень интересно, почему в следующем фрагменте кода второй NSLog возвращает 0.Интересует состояние NSButtonCell
NSLog(@"%ld", (long)[[self.tableView preparedCellAtColumn:0 row:0]state]);
[[self.tableView preparedCellAtColumn:0 row:0]setState:1];
NSLog(@"%ld", (long)[[self.tableView preparedCellAtColumn:0 row:0]state]);
Тот факт, что она возвращает 0 означает, что я утра посылает сообщение к экземпляру NSButtonCell, верно? Почему же setState: изменить возвращаемое значение второго NSLog?
Да, я пробовал называть его как в ApplicationDidFinishLaunching: так и в IBAction AddTask: который срабатывает при нажатии кнопки, и оба они возвращаются по линиям ячейки:. Итак, я знаю, что есть экземпляр. Однако вызов setState: на нем не вызывает изменения внешнего вида. На самом деле, что было бы очень полезно, если бы я мог инициализировать его с определенным состоянием, поскольку я пытаюсь выяснить способ загрузки состояния флажков из plist. Сначала я думал, что должен существовать такой метод, как initWithState: но такой метод не существует ... –
PopKernel
Поскольку ваш флажок находится в строке в представлении таблицы, источником данных является то, как вы должны устанавливать состояние своего флажка, а не программно. Когда вы хотите изменить состояние флажка, вам необходимо обновить источник данных, который затем обновит флажок в представлении таблицы. Если вы измените его вручную по мере того, как вы пытаетесь сделать это, оно просто будет изменено на любое значение, возвращаемое источником данных для этой строки. Использование источника данных также заключается в том, как вы первоначально устанавливали состояния для всех своих флажков. –
Для получения дополнительной информации ознакомьтесь с этой страницей на веб-сайте разработчика Apple: https://developer.apple.com/library/mac/documentation/cocoa/conceptual/TableView/PopulatingView-TablesProgrammatically/PopulatingView-TablesProgrammatically.html –