我學習可可,和我有一個問題:我想一個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