我是Mac的新手。我熟悉iOS编码的UITableView,但似乎无法使NSTableView在我的应用程序上正常工作。是的,我查看了文档和教程,但是我无法获得所需的结果。我期望的结果应该是非常基本和简单的,但我被困在TableViews上。我真的希望它的功能更像是它如何使用UITableView,而不是它似乎想要使用NSTableView。我不想添加或删除行。我只需要1列,我真的希望它像按下一个按钮列表一样工作,并在下一个NSView上的同一屏幕上触发与该选项相关的内容。
(我在一个屏幕上有3个视图。第一个是左侧的主菜单,按下时触发tableView显示子菜单。选择该选项后,它会打开屏幕最右侧的内容。无论如何都希望得到结果。)
目前没有任何内容填充tableview。这就是它目前的样子。
·H
@interface RootViewController : NSViewController <NSTableViewDataSource>{
IBOutlet NSView *mainMenuView;
IBOutlet NSTableView *tableView;
NSMutableArray *options;
}
-(IBAction)mainMenuBtn:(id)sender;
@end
的.m
@interface RootViewController ()
@end
@implementation RootViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
options = [[NSMutableArray alloc] init];
}
return self;
}
-(void)viewDidLoad{
}
- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView{
return [options count];
}
- (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row{
return [[options objectAtIndex:row] valueForKey:[tableColumn identifier]];
}
-(IBAction)mainMenuBtn:(id)sender{
NSLog(@"1");
[options addObject:@"Strain 1"];
NSString *test = [options objectAtIndex:0];
NSLog(test);
[tableView reloadData];
}
目前我在NIB中将tableView连接到TableView。我试图将dataSource连接到文件的所有者,但这不起作用。似乎找不到任何其他地方来连接它。任何建议将不胜感激。感谢
答案 0 :(得分:0)
首先,NSTableView的dataSource必须连接到Interface Builder中的RootViewController实例,或者通过代码连接。 对我来说似乎有些怀疑的是:
return [[options objectAtIndex:row] valueForKey:[tableColumn identifier]];
我不知道[tableColumn identifier]的值是什么,但它必须与您添加到数组的对象的属性相匹配。我可以看到你添加的对象是字符串,因此[tableColumn identifier]必须是类NSString的属性。如果您使用字符串作为数组的对象,请尝试使用:
return [options objectAtIndex:row];