私はコードページを投稿せずに何をしているのかを知るために、私はNSOperationを持っています。そのNSOperationでは、NSNotificationCenterを使用して、新しいジョブが開始されるたびにNSViewに通知を送信します。新しいサブビューを追加して、ちょうど開始した仕事に関する情報を私に提供したいと考えています。問題は、新しいサブビューを描くようには見えないということです。ここに私が今いるものがあります。その後、NSViewとその中でのサブビューのロード
-(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
に追加されますが、とき:
- (void)drawRect:(NSRect)dirtyRect
{
NSLog(@"Draw Count %i", [jobViewArray count]);
int i = 0;
while (i < [jobViewArray count]) {
[self addSubview:[jobViewArray objectAtIndex:i]];
}
}
し、さらにdrawRect:
が再び呼び出されました。jobViewArray
は空です。私がこれのようなことをやろうとしたのは初めてのことなので、私はおそらくここで何か完全に間違っているでしょう...それはうまくいきませんので、
通知内のjobViewArrayカウントのlogステートメントは、あなたが期待するものを示していますか? jobViewArrayはプロパティですか? – sosborn
通知メソッドでは、logステートメントは1のカウントを返しますが、後でdrawRectは0を返します。jobViewArrayは、次の定義を持つプロパティです。@property(readwrite、copy)NSMutableArray * jobViewArray; – Kris
通知そのログ文を一番上に置きます。それが現在のところでは、少なくとも1つは常に返されます。なぜなら、あなたが作成したjobViewArrayを作成しないと、それを作成してしまうからです。また、イアンはそうです、drawRectでビューを追加するべきではありません。 – sosborn