Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

Jeremy082983

macrumors newbie
Original poster
Dec 27, 2008
1
0
I have a calculation that can take a while sometimes depending on user input. Sometimes it's instant and sometimes it takes several minutes. I've already implemented a cancel button if the user doesn't want to wait. I'd also like to have a progress bar to display how much longer it will take. I can calculate the progress bar value easily, but I am having trouble with getting it to update.

I've tried using:

[self.view setNeedsDisplay];

and

CFRunLoopRunInMode(kCFRunLoopDefaultMode, 0, YES);

but neither seem to be working for me. I've tried running the calculation loop in the background and using:

[self performSelectorOnMainThread:mad:selector(progressUpdate) withObject:f waitUntilDone:YES];

where progressUpdate is a new method that accepts "f" as an argument to update the UIProgressView.

Does anyone know what the best way to update a progress bar is while the loop that is calculating it is still running? The above things that I tried were suggestions I saw in other threads for similar problems.

Thanks.

EDIT -

I have this working now. I used [NSThread detachNewThreadSelector: ... ]; to start the loop for the calculation. This loop also calculates the value for the progress indicator and stores it in a variable defined in the header file.
Then I used another [NSThread detachNewThreadSelector: ... ]; to run a loop on a [self performSelectorOnMainThread: ...]; that set the value of the progress indicator.

It did not work if I updated the progress value in the new thread without calling performSelectorOnMainThread.
It did not work if I moved the performSelectorOnMainThread to the loop for the calculation and commented out the detachNewThreadSelector for the progress thread.

This will work for now, but if anyone know of a better way, please let me know. Also, I don't like running the calculation loop in a new thread as it severely slows down the calculation. This is just with testing on the simulator. I have yet to see what it looks like on the device.

Thanks.
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.