在我的应用程序中,我的一个视图需要比正常情况更长的时间才能加载(这是一个带有许多图片的滚动视图)所以我想我会让用户知道视图加载时发生了什么。所以我放入了一个进度条,它使用一个计时器来加载通常需要多长时间。唯一的问题是,当触摸按钮时,iPhone仍会加载视图,然后当新视图打开时,出现进度条并启动计时器。如何设置它以使进度条出现在与按钮相同的视图上,按下按钮时加载第二个视图,当进度条填满时,进入第二个视图。这是我到目前为止的代码。
- (void) button
{{
if (!self.baseSheet) {
baseSheet = [[UIActionSheet alloc]
initWithTitle:@"Please Wait"
delegate:self
cancelButtonTitle:nil
destructiveButtonTitle: nil
otherButtonTitles: nil];
[baseSheet setNumberOfRows:5];
[baseSheet setMessage:@"Loading Photos"];
UIProgressView *progbar = [[UIProgressView alloc] initWithFrame:CGRectMake(50.0f, 70.0f, 220.0f, 90.0f)];
progbar.tag = PROGRESS_BAR;
[progbar setProgressViewStyle: UIProgressViewStyleDefault];
[baseSheet addSubview:progbar];
[progbar release];
}
UIProgressView *progbar = (UIProgressView *)[self.view viewWithTag:PROGRESS_BAR];
[progbar setProgress:(amountDone = 0.0f)];
[NSTimer scheduledTimerWithTimeInterval: 0.5 target: self selector: @selector(incrementBar:) userInfo: nil repeats: YES];
[baseSheet showInView:self.view];
[[self navigationController] pushViewController:[[ScrollViewController alloc] init]
animated:YES];
}}
答案 0 :(得分:0)
您是否尝试将进度条例程放入完全独立的方法中?
有时我也会遇到方法中某些例程的执行速度问题 - 尤其是与UIView / UIImageView相关的更改。有时,某些与视图相关的例程的更改实际上比在实际出现之前执行的内容更快地更新。我发现通常可以通过将显示视图更改的例程放到一个完全独立的方法中,并在之前调用该方法来解决这个问题。