2017-08-09 66 views
0

我有一個視圖控制器,它是我的窗口的根視圖控制器的子視圖控制器。該子視圖控制器具有表視圖,當我選擇一行時,它告訴父視圖控制器以模態方式呈現視圖控制器。但是,模態視圖控制器從不出現。我創建了一個裸露的骨骼測試視圖控制器,僅打印viewDidLoadviewWillAppear。我注意到的是,當我撥打parentVC.present(testVC, animated:true, completion:nil)時,viewDidLoad運行,但viewWillAppear不是。當我以某種方式與UI進行交互時,纔會調用viewWillAppear。無論是點擊,平移,滾動或其他。ViewController Modal Presentation沒有出現

我花了數小時試圖調試。看起來主隊似乎並沒有被阻擋,我已經將問題減少到了最基本的狀態。直到我再次與UI交互之前,模態呈現的視圖控制器的viewWillAppear根本不會被調用。

什麼可能導致此症狀?

+0

我們應該能夠在沒有代碼的情況下猜出這個嗎? –

+0

你可能已經在dispatch asynch隊列中設置了這個'parentVC.present(testVC,animated:true,completion:nil)'。分享你的代碼。 – Krunal

+0

@Rob主隊列是我想到並檢查的第一件事情。我把這個斷言放在了好的位置,並且沒有例外。它的主線。 –

回答

0

在評論,你提到你與

let vc = TestVC() 

其中TestVC大概是一個(主要是空的)UIViewController子類的實例化視圖控制器。

視圖控制器需要或者通過或者故事板的場景(使用instantiateViewController)創建的視圖,筆尖或在極少數情況下,您在loadView創建一個視圖(你不應該與viewDidLoad混淆)。

我建議創建一個故事板場景(假設你使用故事板),給它一個故事板ID,然後用instantiateViewController

let vc = storyboard.instantiateViewController(withIdentifier: "foo") 

但僅僅有一個UIViewController子類,稱爲TestVC並用它實例TestVC()將無法​​正常工作。


在我們的討論中,你說你想以編程的方式做到這一點,沒有NIB或故事板。如果是這樣,請使用loadView。一個例子見https://stackoverflow.com/a/37964249/1271826