NSTableView不会填充任何数据

时间:2012-10-26 11:55:48

标签: xcode nstableview populate

我正在尝试通过Apple文档中的示例代码设置一个非常基本的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

3 个答案:

答案 0 :(得分:0)

我想你错过了

@property (weak) IBOutlet NStableView *tableview; 

答案 1 :(得分:0)

从xib / storyboard连接你的tableview出口,不要忘记设置delagate和datasource。

@property (weak) IBOutlet NSTableView *tableView;

在Interface Builder的“属性”检查器窗格(Cmd-Opt-4)中,将表视图类型设置为“基于视图”。它默认为基于单元格。

您必须在左侧对象视图中选择表视图,或者在编辑器中单击它。请注意,第一次在编辑器中单击它时,它将选择滚动视图,因此您必须再次单击它以使其选择表视图对象。

我相信您需要Xcode 4.3或更新版本的OS X 10.7 SDK,以及基于视图的表格视图,才能使用。

答案 2 :(得分:0)

我尝试了同样的事情,结果发现NSTextField结果没有被实例化。我最终使用

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

这很好用。