2017-08-10 50 views
1

我在A類中創建了一個函數,該函數創建一個對話窗口,每當我的應用程序加載完成時,窗口就會出現。所以在我的AppDelegate.swift文件中,我將調用A類的實例。此實例調用應顯示對話框窗口的函數。問題是,當我的應用程序加載時,甚至當我的應用程序完成加載時,我沒有看到我的對話窗口。我相信問題是,每當我打電話給我的功能:iOS中的對話窗口在加載應用程序時從另一個類中調用時不顯示

present(refreshAlert, animated: true, completion: nil) 

在那時我的視圖控制器仍然可見。我認爲我需要弄清楚refreshAlert是在窗口層次結構的頂部顯示的。任何人都可以幫我弄清楚這個問題。 謝謝,

回答

1

如果你想從應用程序委託呈現控制器試試這個:

self.window?.rootViewController?.present(alert, animated: true, completion: nil) 

如果你不知道爲什麼在你的類不顯示警報是從應用程序委託裝,嘗試在該警報上放置一個調試器,並查看該控件是否在該類加載的同時傳遞給該警報。 如果是這樣的話,那麼你應該嘗試把一個延遲,然後提出警告是這樣的:

DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 1.5, execute: { 
      present(alert, animated: true, completion: nil) 
     }) 

或也許嘗試把警報在func viewDidAppear(_ animated: Bool)或控制達到viewDidAppear後觸發它。

+0

讓我知道,如果它可以幫助 –

+0

感謝奧馬爾,使用DispatchQueue.main.async用延遲做了工作。 – Juventus

+0

@Juventus我很高興它爲你工作!不用謝 –

0

很可能你沒有從主線程調用它。

使用DispatchQueue.main.async將其發送到主線程

相關問題