1

Appleのドキュメントのサンプルコードを使用して、1つの列を持つ非常に基本的なNSTableViewを設定しようとしています。現在、Cocoaバインディングはまだダークアートに少し似ているため、プログラムで設定していますが、ビルドして実行すると、アプリにデータが表示されません。私のコードに何か足りないものはありますか?(私はまた、Interface Builderを介してデータソースとデリゲートを接続したので、それもできません。)

インターフェースファイル

#import <Cocoa/Cocoa.h>

@interface RLTAppDelegate : NSObject <NSApplicationDelegate, NSTableViewDataSource, NSTableViewDelegate>

@property (assign) IBOutlet NSWindow *window;
@property (weak) IBOutlet NSScrollView *tableView;

@property (copy) NSArray *nameArray;

@end

実装ファイル

#import "RLTAppDelegate.h"

@implementation RLTAppDelegate

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
    _nameArray = [[NSArray alloc] initWithObjects:@"Ryan", @"Steven", @"Scott", nil];
}

- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView {

        return _nameArray.count;
}

- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {

    NSTextField *result = [tableView makeViewWithIdentifier:@"withoutIcon" owner:self];

    result.stringValue = [self.nameArray objectAtIndex:row];

    return result;
}

@end
4

3 に答える 3

0

xib/storyboard から tableview の Outlet を接続し、delagate と datasource を設定することを忘れないでください。

@property (weak) IBOutlet NSTableView *tableView;

Interface Builder の Attributes インスペクタ ペイン (Cmd-Opt-4) で、テーブル ビュー タイプを View Based に設定します。デフォルトではセルベースです。

左側のオブジェクト ビューで、またはエディタでクリックして、テーブル ビューを選択する必要があります。エディターで最初にクリックするとスクロール ビューが選択されるので、もう一度クリックしてテーブル ビュー オブジェクトを選択する必要があることに注意してください。

OS X 10.7 SDK、つまりビューベースのテーブル ビューを使用するには、Xcode 4.3 以降が必要だと思います。

于 2012-10-26T12:09:20.983 に答える
0

同じことを試してみたところ、NSTextField の結果がインスタンス化されていないことがわかりました。結局使ってしまった

NSTextField *result = [[NSTextField alloc]init];
result.string = [_nameArray objectAtIndex:row];

これはうまく機能します。

于 2014-08-14T17:55:07.223 に答える