У меня есть приложение Cocoa с NSOutlineView
, которым управляет NSTreeController
.NSTreeController: пользовательское поведение для привязки «canInsert»
Кроме того, есть кнопка для добавления новых элементов в схему. Я привязал флаг кнопки enabled
к значению canInsert
древовидного контроллера.
Я только хочу разрешить добавлять до 5 элементов в виде контура. После этого canInsert
должен вернуть NO
.
Я создал свой собственный подкласс NSTreeController
и перезаписал canInsert
, но активированный статус кнопки не изменяется, поскольку он не понимает, что контроллер дерева изменился при добавлении элементов.
Я также внедрил: keyPathsForValuesAffectingCanInsert
и попытался вернуть различные свойства, такие как content, arrangedObjects
, но вам не повезло.
@implementation ILCustomTreeController
- (BOOL)canInsert
{
return [[self arrangedObjects] count] < 5;
}
+ (NSSet *)keyPathsForValuesAffectingCanInsert
{
return [NSSet setWithObject:@"content"]; // I also tried 'arrangedObjects'
}
@end
Действительно ли используется ваш собственный подкласс? Вы задали имя класса в Interface Builder? –
Да, у меня есть инструкция NSLog в каждом методе. Оба вызываются ровно один раз. – Mark