4

このコードでセレクターを呼び出すことができます

[self performSelector:<#(SEL)#> onThread:<#(NSThread *)#> withObject:<#(id)#> waitUntilDone:<#(BOOL)#>]

スレッドは、このセレクターが機能するまで待機します(waitUntilDone:YESを設定した場合)。私の質問は-いくつかのコードが完了するまで待つことはできますか?

例えば。アニメーションをロードするサブビューがあります。アニメーションの長さは2秒です。また、アニメーション中に背景ビューでアクションを実行すると、エラーが発生します。アニメが終わるまで待ちたいです。そして、セレクターを作成して使用することはできません

[self performSelector:<#(SEL)#> onThread:<#(NSThread *)#> withObject:<#(id)#> waitUntilDone:<#(BOOL)#>]

助言がありますか?)。

4

3 に答える 3

5

あなたはこの方法を試すことができます

-(void)waitUntilDone:(void(^)(void))waitBlock {
    //use your statement or call method here
    if(waitBlock){
        waitBlock();
    }
}

そして、あなたはそれをとして使う必要があります

[self.tableView waitUntilDone:^{
    //call the required method here                                            
}];
于 2013-03-13T11:26:59.490 に答える
2

UIViewアニメーションはこれをブロックスタイルのアニメーションの形で提供します

[UIView animateWithDuration:0.25f
                 animations:^{
                   // animations
                 } completion:^(BOOL finished) {
                   // run code when the animation is finished
                 }];
于 2013-03-13T11:29:30.120 に答える
1

アニメーションが終了するまで待ってから、残りの作業を行います。

例:

   [UIView animateWithDuration:duration
    animations:^
    {
       //DO ANIMATION ADJUSTMENTS HERE
    }
    completion:^(BOOL finished)
    {
        //ANIMATION DID FINISH -- DO YOUR STUFF
    }];
于 2013-03-13T11:28:23.100 に答える