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 に答える