2010-02-08 57 views
0

我有一些需要確認的破壞性操作,我正在使用UIActionSheet。在UIActionSheet後打開UIActivityIndi​​catorView

在clickedButtonAtIndex中,我引發了一些需要UIActivityIndi​​catorView的操作。

問題是我看不到UIActivityIndi​​catorView,直到UIActionSheet已關閉,並且操作完成時會發生這種情況。

即使用戶按下了一些按鈕並且他們的clickedButtonAtIndex委託已被觸發,我是否可以強制關閉UIActionSheet?

在僞代碼:

  • 用戶想要做一些破壞性操作
  • 請求確認與UIActionSheet
  • 用戶說YES
  • 代表clickedButtonAtIndex火災和調用lenghtly操作
  • 這個操作,第一件事是打開一個UIActivityIndi​​catorView,但由於UIActionSheet是活動的,我看不到直到結束...

感謝,

回答

1

您可以撥打

CFRunLoopRunInMode(UITrackingRunLoopMode, 0.1, true); 

讓你的冗長的計算開始前的UI元素刷新。或者,你可以使用

-(void)doLengthyOperation { 
    show_activity_indicator_view(); 
    [self performSelector:@selector(doRealLengthyOperation) withObject:nil afterDelay:0.1]; 
} 
-(void)doRealLengthyOperation { 
    // do the real lengthy operations. 
} 
+0

這是行不通的:CFRunLoopRunInMode(UITrackingRunLoopMode,0.1,true); 我要去嘗試另一種方法... 謝謝, r。 – mongeta

+0

@mongeta:可能你需要運行在'kCFRunLoopModeDefault'模式而不是'UITrackingRunLoopMode'。另一條路線雖然更好。 – kennytm

+0

謝謝,最終這兩個解決方案的完美結合解決了我的問題。 :-) – mongeta

相關問題