为了在不发布代码页面的情况下了解我在做什么...我有一个 NSOperation 用于在将文件添加到文件夹时对其进行处理。在那个 NSOperation 中,每当启动新作业时,我都会使用 NSNotificationCenter 向 NSView 发送通知。这个想法是,我想添加一个新的子视图来给我一些关于刚刚开始的工作的信息。问题是我似乎无法绘制新的子视图。这是我现在所拥有的。
- (void)drawRect:(NSRect)dirtyRect
{
NSLog(@"Draw Count %i", [jobViewArray count]);
int i = 0;
while (i < [jobViewArray count]) {
[self addSubview:[jobViewArray objectAtIndex:i]];
}
}
然后再往下:
-(void) newJobNotification: (NSNotification *) notification
{
if (!jobViewArray)
jobViewArray = [[NSMutableArray alloc] init];
++jobCount;
NSRect rect;
rect.size.width = 832;
rect.size.height = 120;
NSPoint point = { 0, ((jobCount * 120) - 120) };
rect.origin = point;
ProgressView *newJob = [[ProgressView alloc] initWithFrame:rect];
[jobViewArray addObject:newJob];
NSLog(@"Notice Count %i", [jobViewArray count]);
}
}
当我使用我的应用程序添加工作时,通知被我的 NSView 正确接收,子视图被正确添加到jobViewArray
,但是当drawRect:
再次被调用时,我jobViewArray
是空的。这是我第一次尝试做这样的事情,所以我可能在这里做错了什么......我想这是不言而喻的,因为它不起作用吧?