Мне нужна помощь в определении того, как отображать содержимое NSArray в NSTableView. Мой NSArray заполнен (или, по крайней мере, я думаю, что это) именами файлов из каталога. Я использую NSFileManager для получения имен файлов в каталоге, а затем загружаю эту информацию в NSArray. Но я не могу понять, как загрузить NSArray в NSTableView.Как добавить NSArray имен файлов в NSTableView? - cocoa
AppDelegate.h
#import <Cocoa/Cocoa.h>
@interface AppDelegate : NSObject <NSApplicationDelegate> {
IBOutlet NSTableView *tableView;
NSArray *list;
IBOutlet NSTextField *text;
NSFileManager *manager;
NSString *path;
NSString *pathFinal;
}
@property (assign) IBOutlet NSWindow *window;
- (IBAction)listArray:(id)sender;
@end
AppDelegate.m
#import "AppDelegate.h"
@implementation AppDelegate
@synthesize window = _window;
- (int)numberOfRowsInTableView:(NSTableView *)tableView
{
return [list count];
}
- (id)tableView:(NSTableView *)tableView
objectValueForTableColumn:(NSTableColumn *)tableColumn
row:(int)row
{
return [list objectAtIndex:row];
}
- (IBAction)listArray:(id)sender {
path = @"~/Library/Application Support/minecraft/bin/";
pathFinal = [path stringByExpandingTildeInPath];
list = [manager directoryContentsAtPath:pathFinal];
[tableView reloadData];
}
- (void)dealloc
{
[super dealloc];
}
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
}
@end
У меня возникли проблемы при получении этой работы. Это просто ничего не делает, и я не получаю ошибок в журнале. Когда я ввел протокол NSTableDataSource, он сказал, что он не найден и сказал мне изменить его на NSTableViewDataSource, я не знаю, если это проблема. И у меня есть таблица как источник данных в IB и делегат, но ничего не происходит. Он также говорит, что directoryContentsAtPath устарел. – drewsdunne
Извините, это моя ошибка с именем протокола, это 'NSTableViewDataSource'. Вы не устанавливаете представление таблицы в качестве источника данных, вы устанавливаете объект «AppController» в качестве источника данных в виде таблицы. Подключите выход 'datasource' таблицы вида к экземпляру' AppController'. 'directoryContentsAtPath' *** *** устарел. Если вы посмотрите на документы, оно предложит вам вместо этого использовать 'contentsOfDirectoryAtPath: error:'. –
Извините, я допустил ошибку, я неправильно сформулировал это. У меня был «источник данных» табличного представления, подключенный к «AppController». Но он ничего не показывает в таблице, и в нем говорится, что такой метод экземпляра 'contentOfDirectoryAtPath: error:' – drewsdunne