我正在实现一个Cocoa应用程序,它只是一个简单的进度条,当我按下按钮时启动它.
情况是:当我按下按钮时,我可以看到动画是开始和停止,但进度条不会更新值.
我也尝试过这里提到的解决方案,但它不起作用:
如何在长时间运行的循环中更新Cocoa中的进度条?
有人可以帮我看看我的源代码中的问题在哪里?
这是我的来源.
SimpleProgressBar.m
#import "SimpleProgressBar.h"
@implementation SimpleProgressBar
@synthesize progressBar;
int flag=0;
-(IBAction)startProgressBar:(id)sender{
if(flag ==0){
[self.progressBar startAnimation:sender];
flag=1;
}else{
[self.progressBar stopAnimation:sender];
flag=0;
}
[self.progressBar displayIfNeeded];
[self.progressBar setDoubleValue:10.0];
int i=0;
for(i=0;i<100;i++){
NSLog(@"progr: %f",(double)i);
[self.progressBar setDoubleValue:(double)i];
[self.progressBar setNeedsDisplay:YES];
}
}
@end
Run Code Online (Sandbox Code Playgroud)
SimpleProgressBar.h
#import < Foundation/Foundation.h >
@interface SimpleProgressBar : NSObject{
__weak NSProgressIndicator *progressBar;
}
@property (weak) IBOutlet NSProgressIndicator *progressBar;
-(IBAction)startProgressBar:(id)sender;
@end
Run Code Online (Sandbox Code Playgroud)
非常感谢您提供任何有用的答案.
更新:
这是我从解决方案的移植,它不起作用:
SimpleProgressBar.m
#import "SimpleProgressBar.h"
@implementation SimpleProgressBar
@synthesize progressBar;
int flag=0;
-(IBAction)startProgressBar:(id)sender{
if(flag ==0){
[self.progressBar startAnimation:sender];
flag=1; …
Run Code Online (Sandbox Code Playgroud)