2015-10-20 71 views
0

UIAlertController的實例上調用[self presentViewController]會立即加載警報。有沒有辦法延遲其演示文稿?presentViewController延遲

[self presentViewController:alert animated:YES completion:nil]; 
+0

你的意思是UIAlertController?或者UIAlertView?你的意思是從警報中的一個動作提示警報或呈現另一個viewController? –

+0

@JimTierney我的意思是UIAlertController。你有投票給我嗎? – Eric

+0

沒有downvote從我。很高興你把它排序雖然 –

回答

3

您可以使用GCD或或performSelector:withObject:afterDelay:

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ 
    [self presentViewController:alert animated:YES completion:nil]; 
}); 

您還可以創建一個局部變量,然後出現在您需要的正確的時間打電話。取決於你的用例,這三個中的一個應該可以幫助你在正確的時刻延遲並顯示警報控制器。

您還可以檢查this answer

+0

'performSelector:withObject:afterDelay:'根本不起作用。 GCD有效,但UIAlertController的警報沒有出現在應用程序中。是否應該在主線程中調用警報? – Eric

+0

是的,它應該從主線程調用,否則你會打開怪異/未定義的行爲 – darren102

+0

是的,確保你的代碼在主線程上運行。我更新了代碼 – manman

1

如果你在等待的東西下載或什麼的,你也可以考慮使用一個被稱爲(並呈現視圖控制器),一旦任務完成塊。如果你這樣做,你還應該使用某種加載動畫。

+0

謝謝@Raesu。我不等待任何下載。關鍵是顯示更新用戶硬幣錢包的警報,其中硬幣從提供牆上賺取。回調的速度很快,所以沒有必要等待,除非有什麼遺漏。 – Eric

+0

明白了。在@曼曼的回答中,我更喜歡'performSelector:... afterDelay:'方法,更乾淨的代碼。 – Raesu

+0

必須選擇器是方法,函數還是操作,對不對? Alert是類UIAlertViewController的一個實例。我可以將伊娃作爲選擇者嗎? – Eric