好吧,我对Obj-C和Cocoa很新,但我确信我的绑定是正确的。我一直在谷歌搜索,搜索堆栈溢出并一次又一次检查我的值。
所以,这是我的绑定:
他们连接到这个班级:
@interface TMMaddMangaWindowDelegate : NSWindowController {
...
}
...
@property (copy) NSMutableArray* mangaList;
...
@end
@implementation TMMaddMangaWindowDelegate
...
@synthesize mangaList;
// - (NSMutableArray*) mangaList {
// NSLog(@"mangaList was called!");
// return mangaList;
//}
//- (void) setMangaList:(NSMutableArray *) input{
// NSLog(@"setMangaList was called!");
// [mangaList autorelease];
// mangaList = [input retain];
//}
...
-(void) populateList:(NSArray*)list{
NSMutableArray* newArray = [[NSMutableArray alloc] initWithArray:list];
NSLog(@"Populating List.");
for(NSXMLNode* node in list){
[newArray addObject:node.description];
//[[self mutableArrayValueForKey:@"mangaList"] addObject:node.description];
//NSLog(@"%@", node.description);
}
[self setMangaList:newArray];
[[self chapterListDownloadIndicator] stopAnimation:self];
}
正如您所看到的,我也尝试了mutableArrayValueForKey
方法,但没有产生任何结果。我知道一个事实,mangaList正在获得物品。
我已经做了一段时间了,可能犯了一个愚蠢的错误。
提前致谢。
答案 0 :(得分:3)
看起来你正在改变数组控制器后面的mangaList
。每当您对mangaList
进行更改时,您应该先完成[self willChangeValueForKey:@"mangaList"];
,然后在完成更改后再调用[self didChangeValueForKey:@"mangaList"];
。这将让阵列控制器知道它需要看看发生了什么变化。
答案 1 :(得分:0)
事实证明,问题是窗口没有将文件所有者的类标识设置为我的窗口控制器/委托。在我设定这一刻的那一刻,窗户栩栩如生。
这个问题也阻止了我的NSProgressIndicator工作。