我学习可可,和我有一个问题:我想一个NSMutableArray的内容绑定到一个NSTableView,绑定的。我阅读了许多关于他们的文档,但我无法设法让他们工作(我的表格中没有显示任何内容)。绑定一个NSTableView到一个NSMutableArray
这里是事实:
我创建了一个简单的模型,叫做MTMTask
其中包含2个属性,priority
和text
:
MTMTask.h
@interface MTMTask : NSObject {
NSString *priority;
NSString *text;
}
@property(copy) NSString* priority;
@property(copy) NSString* text;
- (id) initWithPriority :(NSString*)newPriority andText:(NSString*)newText;
@end
MTMTask.m
#import "MTMTask.h"
@implementation MTMTask
@synthesize text, priority;
- (id) initWithPriority:(NSString *)newPriority andText:(NSString *)newText {
if (self = [super init]) {
priority = newPriority;
text = newText;
return self;
}
return nil;
}
@end
然后,我cre重复的信号MTMTaskController:
MTMTaskController.h
#import <Cocoa/Cocoa.h>
#import "MTMTask.h"
@interface MTMTaskController : NSObject {
NSMutableArray *_tasksList;
}
- (NSMutableArray *) tasksList;
@end
MTMTaskController.m
#import "MTMTaskController.h"
@implementation MTMTaskController
- (void) awakeFromNib
{
MTMTask *task1 = [[MTMTask alloc] initWithPriority:@"high" andText:@"Feed the hungry cat"];
MTMTask *task2 = [[MTMTask alloc] initWithPriority:@"low" andText:@"Visit my family"];
_tasksList = [[NSMutableArray alloc] initWithObjects:task1, task2, nil];
}
- (NSMutableArray*) tasksList
{
return _tasksList;
}
@end
最后我编辑的MainMenu.xib:我添加了一个NSObject
和它的类设置为MTMTaskController
。然后我添加了一个名为TasksListController
的NSArrayController,其内容出口绑定到MTMTaskController.tasksList
。我也将其模式设置为Class
和类名称MTMTask
。我绑定了NSTableView
至TasksListController
两列的文本和优先级。
但是当我运行这个程序时,它并不是真的成功:表中没有任何东西显示出来。
你有没有关于我的问题的想法?我想我错过了一些东西,但我无法弄清楚什么。
在此先感谢!
你有没有设置断点,以确保控制器和对象实际上正在创建?您可能忘记将控制器作为xib文件中的对象添加,在这种情况下'awakeFromNib'不会被调用。 – Abizern 2010-02-22 09:52:27
刚刚尝试过:我在'awakeFromNib'中放了一个NSLog()调用,并将其显示在控制台中。看起来问题不在那里。 – Thomas 2010-02-22 09:57:42