NSProgressIndicator不会消失(确定)

时间:2011-11-02 22:58:55

标签: cocoa nsprogressindicator

我有一个确定的进度指标。它正如我所期望的那样工作但它在达到maxValue后不会消失。我已将进度指示器设置为在main.nib文件中停止时不显示,我还将其输入到awakeFromNib {}方法中。 我在例程的末尾添加了一个日志,以确保[displayWhenStopped]设置仍然设置为NO并且它是。

这是我的代码:

-(void)getEvents:(NSURL *)mffFile{

NSMutableArray * eventTypeResults =[[NSMutableArray alloc]init];

EWaveformRecording  *ptrToRcdFile = [EWaveformRecording openRecording:mffFile permission:readOnly user:nil convertFileFormat:NO openReadOnlyAnyway:NO];
NSArray *events = [ptrToRcdFile getEvents];
//get the size of events for the progressbar and instantiate a loop counter
NSInteger total = [events count];
int loop = 0;

//set progress bar params
[self->meter_ setUsesThreadedAnimation:YES];
[self->meter_ setControlSize:NSMiniControlSize];
[self->meter_ setMaxValue:(double)total];

for(EEvent* event in events){
    loop ++;
    if(![eventTypeResults containsObject:event.code]){
     NSLog(@"check eventNames in getEvents %@", event.code);
     [eventTypeResults addObject: event.code];
    }//end if
//display loop increment in progress bar
[self->meter_ setDoubleValue:(1000*(double)loop)/1000];
}//end for

//send the eventTypesResults array to the EventExport class
[evtPtr setEventsAvailableList:eventTypeResults];
 }

我尝试过:

有没有[setUsesThreadedAnimation],我不完全理解;它确实减慢了进度条,使其看起来更好,但文档说只有不确定的类型应该受到动画的影响。

我尝试过使用[start& amp;停止动画] 我在循环

之后尝试过[setDisplayWhenStopped:NO]

非常感谢任何帮助 麦克

1 个答案:

答案 0 :(得分:0)

这就是我所学到的。

我不应该允许进度条在不同的线程上运行,即使它看起来像它的工作,因为NSProgressIndicator不能再响应主线程中的设置,所以正确的做法是不实例化然而,这不是解决我问题的方法;我正在做其他一切正确,但主线程无法重绘进度,因为它忙于UI中的所有其他调用。解决方案是实现NSRunLoop,以便循环的每次迭代都会中断主线程并重绘进度表,然后返回控制。