У меня есть NSTableview
, в этом табличном представлении я заполняю столбцы objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row
.
Я хотел бы столбец, который не заполнен. Если я помещаю столбец без идентификатора или идентификатор, который не соответствует ключу, я получаю сообщение об ошибке из-за несовместимости с кодировкой ключа.
Теперь, чтобы обойти это, я добавил столбец с идентификатором «пропустить», я проверяю это условие в своем коде с помощью этого...
-(id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row{
Pizza* pizza = [pizza objectAtIndex:row];
NSString* identifier = [tableColumn identifier];
if ([identifier isEqualToString:@"skip"]) {
return nil;
}
return [pizza valueForKey:identifier];
}
Я также должен ответить взаимностью на setObjectValue:(id)object forTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row
.
Кажется, это работает нормально, но это похоже на взлом.
Есть лучший способ сделать это?
Кроме того, причина, по которой мне нужны пустые столбцы, заключается в том, что я хочу разместить такие объекты, как кнопки, которые не принадлежат массиву, на который ссылается табличное представление.
Спасибо за ваш вклад!
Pizza
, но представление часто имеет аспекты, которые не воплощены в модели, и поэтому контроллер должен быть посредником. Если хотите, вы можете переопределить-valueForUndefinedKey:
в классеPizza
, но, на мой взгляд, это будет хаком. Кстати, если у вас есть проверка идентификатора столбца, вам не нужно использовать пропуск. Вы также можете легко проверить наличие пустого идентификатора. - person Ken Thomases   schedule 17.05.2014