ビューベースの NSTableView を設定していますが、メソッド numberOfRowsInTableView が呼び出されていません。呼び出されているかどうかを確認すると、ログは nil を返します。
データソースとデリゲート プロトコルに準拠するように AppDelegate をセットアップし、IB を介してこれらを AppDelegate に接続しました。アプリの読み込みが完了すると、テーブルにフィードする配列が初期化されます。
私のコードは次のとおりです。
インターフェース
#import <Cocoa/Cocoa.h>
@interface RLTAppDelegate : NSObject <NSApplicationDelegate, NSTableViewDataSource, NSTableViewDelegate>
@property (assign) IBOutlet NSWindow *window;
@property (weak) IBOutlet NSTableView *tableView;
@property (copy) NSArray *nameArray;
@end
実装
#import "RLTAppDelegate.h"
@implementation RLTAppDelegate
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
self.nameArray = [[NSArray alloc] initWithObjects:@"Ryan", nil];
}
- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView {
return [self.nameArray count];
NSLog(@"%lu", self.nameArray.count);
}
- (NSView *)tableView:(NSTableView *)tableView
viewForTableColumn:(NSTableColumn *)tableColumn
row:(NSInteger)row {
NSTextField *result = [tableView makeViewWithIdentifier:@"name" owner:self];
result.stringValue = [self.nameArray objectAtIndex:row];
return result;
}
@end