我正在尝试通过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
答案 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];
这很好用。