Что такое простой способ настроить мой NSTableView с несколькими столбцами, чтобы отображать только определенные данные в одном столбце. У меня есть IBOutlets, но я не знаю, куда идти оттуда.NSTableView с несколькими столбцами
ответ
Предполагая, что вы не используете привязки/данные ядра какао, вы можете отображать данные в NSTableView, реализуя два метода из протокола NSTableViewDataSource. Как правило, контроллер будет осуществлять протокол, таким образом открыть файл .m контроллера и добавить эти методы к диспетчерским @implementation
:
- (NSInteger)numberOfRowsInTableView:(NSTableView*)tableView {
return 25; // fill this out
}
– (id) tableView:(NSTableView*)tableView
objectValueForTableColumn:(NSTableColumn*)column
row:(int)row {
return row % 3 ? @"Tick..." : @"BOOM!"; // fill this out
}
Вы должны установить dataSource
свойства таблицы к контроллеру. В интерфейсе Builder перетащите элемент из представления таблицы в контроллер и установите dataSource
. Теперь создайте и запустите, и вы увидите свои данные в таблице.
Если вы хотите заполнить только один столбец, добавьте IBOutlet NSTableColumn * к вашему контроллеру; назовем это explosiveColumn
. В Interface Builder перетащите регулятор с контроллера на столбец, который вы хотите заполнить, и установите explosiveColumn
. Тогда, в Tableview: objectValueForTableColumn: строки: вы можете проверить, если параметр column
тот же объект, как тот, что розетка устанавливается:
– (id) tableView:(NSTableView*)tableView
objectValueForTableColumn:(NSTableColumn*)column
row:(int)row {
if (column == explosiveColumn) {
return row % 3 ? @"Tick..." : @"BOOM!";
} else {
// other columns blank for now
return nil;
}
}
Этот учебник может быть полезен: http://www.cocoadev.com/index.pl?NSTableViewTutorial
Вот пример использования нескольких видов таблиц с методами исходных данных и документов на основе применения:
#pragma mark - Data Source Methods
- (NSInteger) numberOfRowsInTableView:(NSTableView *)tv
{
if (tv == racerTableView)
return [racerList count];
else if (tv == vehicleTableView)
return [vehicleList count];
else
return 0; // something wrong here...
}
- (id)tableView:(NSTableView *)tv objectValueForTableColumn:(NSTableColumn *)col
row:(NSInteger)rowi
{
NSString *colid = [col identifier];
if (tv == racerTableView){
NHRacers *racer = [racerList objectAtIndex:rowi];
return [racer valueForKey:colid];
}
else if (tv == vehicleTableView){
NHVehicles *vehicle = [vehicleList objectAtIndex:rowi];
return [vehicle valueForKey:colid];
}
else
return 0; // something wrong here...
}
- (void)tableView:(NSTableView *)tv setObjectValue:(id)obj forTableColumn:(NSTableColumn *)col row:(NSInteger)rowi
{
NSString *colid = [col identifier];
if (tv == racerTableView) {
NHRacers *racer = [racerList objectAtIndex:rowi];
[racer setValue:obj forKey:colid];
}
else if (tv == vehicleTableView){
NHVehicles *vehicle = [vehicleList objectAtIndex:rowi];
[vehicle setValue:obj forKey:colid];
}
else
nil; // something wrong here...
[self updateChangeCount:NSChangeDone];
}
TableView DataSource розетки устанавливаются для каждого файла владельца и файла Владелец установил vehicleTableView и racerTableView к т наследуйте соответствующий «Вид таблицы» в IB. Клавиша colid проверяет идентификатор (устанавливается в IB, выбирая столбец представления таблицы в раскрывающемся списке «Идентичность», пока отображается «Identity Inspector»). Эти значения были выбраны как свойства KVC (совместимые с ключевым кодированием) классов, отображаемых в табличных представлениях: используйте строчную букву (см. Apple docs for rest).
Например: (в NHVehicles.h)
@interface NHVehicles : NSObject
{
NSUInteger entry;
NSString *name;
NSString *vehicleClass;
}
@property NSUInteger entry;
@property NSString *name, *vehicleClass;
@end
(в NHVehicles.m)
@implementation NHVehicles
@synthesize entry, name, vehicleClass;
@end
для этого Tableview, "запись", "имя" и "vehicleClass" будет (w/o ") в поля идентификатора для соответствующих столбцов.
Если вы не хотите показывать некоторые данные в классе, просто не вводите ключ для идентификатора столбца. Слово c Я использую Xcode 4.5.1, и я заметил, что как только я ввел несколько ключей для определенных идентификаторов столбцов, а затем изменил свое мнение и попытался очистить текст, он пожаловался, когда я удалил текст из поля идентификатора (Я больше не мог оставить поле пустым для столбцов, которые я редактировал). Это было непросто обойти, но это было неожиданностью.
- 1. Сводка с несколькими столбцами
- 2. PIVOT с несколькими столбцами
- 3. TableViewCell с несколькими столбцами
- 4. Подзапросы с несколькими столбцами
- 5. fmt с несколькими столбцами
- 6. Поле с несколькими столбцами
- 7. UITableView с несколькими столбцами
- 8. Список с несколькими столбцами
- 9. Очередь с несколькими столбцами?
- 10. Подзапрос с несколькими столбцами
- 11. Treeview с несколькими столбцами
- 12. Коробки с несколькими столбцами
- 13. Подзапрос с несколькими столбцами
- 14. Комбобокс с несколькими столбцами
- 15. ComboBox с несколькими столбцами?
- 16. Отчет RDLC с несколькими столбцами
- 17. Mysql запрос с несколькими столбцами
- 18. ORMLITE ORDER_BY с несколькими столбцами
- 19. VB.NET table.sort с несколькими столбцами
- 20. d3.nest с несколькими столбцами
- 21. Интерполировать данные с несколькими столбцами
- 22. массивы SAS с несколькими столбцами
- 23. Операция CheckAndPut с несколькими столбцами
- 24. Отличное количество с несколькими столбцами
- 25. «транспонирование» таблица с несколькими столбцами
- 26. DataGrid с несколькими столбцами неизвестен
- 27. Обновить строку с несколькими столбцами
- 28. NSPredicate ANY с несколькими столбцами
- 29. Подпроцесс MySQL с несколькими столбцами
- 30. Проблема с несколькими столбцами HTML
как я могу проверить его? У меня есть несколько столбцов, но я хочу, чтобы данные отображались только в одном из них. –
Я обновил ответ с более подробной информацией об этом. В основном вы проверяете параметр столбца, чтобы узнать, является ли он тем, кого вас интересует, и возвратите 'nil' в противном случае. –
спасибо !!!!!! –