NSTableViewにNSArrayの内容を表示する方法を理解する助けが必要です。私のNSArrayは、ディレクトリのファイル名で埋まっています。 NSFileManagerを使用してディレクトリ内のファイル名を取得し、その情報をNSArrayにロードします。しかし、NSArrayをNSTableViewにロードする方法を理解することはできません。NSTableViewにファイル名のNSArrayを追加するにはどうすればいいですか? - ココア
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:'を使用するよう指示されます。 –
申し訳ありませんが、私は間違いを犯しました、私はそれを誤って言いました。私はテーブルビューの 'datasource'を' AppController'に接続しました。しかし、まだテーブルに何も表示されておらず、 'contentsOfDirectoryAtPath:error:'のインスタンスメソッドはないと言います。 – drewsdunne