Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to use cocoa progress bars?

I am a brand new Mac programmer and I need help on how to use NSProgressIndicator. I already looked for sample code, but couldn't find anything that helped.

What I want to do is this:

-(IBAction)startProgressBar:(id)sender; {

    //I want to make the bar update itself by the  value of 1 until it is at the value of 100
    //Example: add 1 to bar every second until it is full

}
like image 494
CocoaCoder Avatar asked Feb 22 '23 07:02

CocoaCoder


1 Answers

I think performSelector:withObject:afterDelay will help you here.

Write a method that will increment your progress bar. At the end of that method call performSelector:withObject:afterDelay on the same method with a delay of 1 second until the bar is full.

You probably won't need to pass an object to that method, so you can just use nil.

EDIT

In your case I would recommend something like this:

- (IBAction)startProgressBar:(id)sender
{
    // Initialize the progress bar to go from 0 to 100
    [progress setMinValue:0.0];
    [progress setMaxValue:100.0];
    [progress setDoubleValue:0.0];

    // Start the auto-increment calls
    [self incrementProgressBar];
}

- (void)incrementProgressBar
{
    // Increment the progress bar value by 1
    [progress incrementBy:1.0];

    // If the progress bar hasn't reached 100 yet, then wait a second and call again
    if([progress doubleValue] < 100.0)
        [self performSelector:@selector(incrementProgressBar) withObject:nil afterDelay:1];
}
like image 119
Aaron Avatar answered Mar 03 '23 06:03

Aaron