1

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

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

单击按钮后,我想立即将标签更改为“等待”。当前发生的情况是,视图的呈现需要 1-2 秒,并且标签仅在 1-2 秒过去后且视图更改之前更改为“等待”。

将动画从 YES 更改为 NO 无济于事。

4

2 回答 2

2

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

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

但是你真的应该调查一下为什么展示 VC 需要这么多时间,而是找到一种方法来优化你的代码。寻找合并并发的方法,不要阻塞主线程。

于 2012-08-06T17:56:43.027 回答
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";

});
于 2012-08-06T17:57:04.120 回答