0

我有一个附加到 IBAction 的按钮,该按钮应该在循环之前隐藏,但它从不隐藏。

- (IBAction)method:(id)sender
{
    button.hidden = YES;
    while(...) //button should be hidden while control is in loop but this never happens.
    {
    }
}

不知道为什么这不起作用任何帮助将不胜感激。

4

1 回答 1

2

您已经设置了它的hidden属性,但是视图并没有立即绘制自己。它必须通过运行循环的迭代来重绘其内容。如果您的方法中有一个长时间运行的同步任务,则控制永远不会返回到运行循环,直到您的方法退出,因此您看不到设置hidden属性的效果。

考虑异步执行您的任务。就像是

button.hidden = YES;
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
    while (...) {
        // do your work here
    }
});
于 2013-03-18T07:35:22.267 回答