在presentmodalviewcontroller之前刷新

时间:2012-08-06 17:46:32

标签: iphone objective-c ios xcode4

按下按钮会调用我的代码中的视图:

buttonlabel.text = @"Wait";
[self presentModalViewController:controller animated:YES];
buttonlabel.text = @"Done";

我想在点击按钮后立即将标签更改为“等待”。目前正在发生的事情是,视图的显示需要1-2秒,并且只有在1-2秒后,标签才会在视图发生变化之前变为“等待”。

将动画从YES更改为NO无效。

2 个答案:

答案 0 :(得分:2)

您需要排队呈现视图控制器,以便系统有机会将按钮文本实际更改为“等待”。如果您想了解更多信息,请访问Google runloop iOS

buttonlabel.text = @"Wait";
dispatch_async(dispatch_get_main_queue(), ^{
    [self presentModalViewController: controller animated: YES];
});

但你真的应该调查为什么展示VC需要花费很多时间,而是找到一种优化代码的方法。搜索结合并发性的方法,不要阻塞主线程。

答案 1 :(得分:2)

buttonlabel.text = @"Wait";

dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, 0.5 * NSEC_PER_SEC);
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
     [self presentModalViewController:controller animated:YES];
     buttonlabel.text = @"Done";

});