2012-01-13 9 views
0

私はUITableViewの行を選択し、didSelectRowAtIndexPathをクリックしてその行をエミュレートする関数を持っています。これはすべて非常に速く起こり、何が起こったのかを知ることが難しく、私はこれらの行為の間を人為的に休止して、目がより喜ばれるようにしたい。iPhone ...アクション間の現在のスレッドを一時停止(非ブロッキング)

NSTimerを使用してこれを実装しましたが、次のコードを使用していますが、解像度はわずか1秒です。私は理想的には約300ミリ秒ほど休止したいと思う。できるだけ簡単に達成するにはどうすればいいですか?

[[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:1]]; 

答えて

1

私はdidSelectRowAtIndexPathを直接呼び出すことに同意できません。あなたがそこでやっていることを別の方法(たとえば、selectionResponse:)に移動し、直接呼び出すことをお勧めします。

あなたはこれをしたら、あなたは好きな値にafterDelay:引数を設定し、あなたのselectionResponse:メソッドを呼び出すためにperformSelector:withObject:afterDelay:を使用することができます。

performSelector:withObject:afterDelay上のドキュメントへのリンクは、それはあなたのユーザーが選択した場合、要求を実行し、保留を解除するために、あなたのdeallocで(同じ文書から)+ cancelPreviousPerformRequestsWithTarget:selector:object:を使用するのも良い考えですことhere

注意ですセレクタが呼び出される前に、遅延期間内にビューコントローラから戻ってきてください。これはクラッシュを防ぎます。

関連する問題