-1

我對一些舊的代碼,我沒有寫工作後,它真的不是很好的架構......辭退呈現視圖控制器,呈現視圖控制器已經發布

的情況是,一個視圖控制器以模態方式呈現自定義視圖控制器,但是每30秒重新呈現呈現視圖控制器。

這裏的問題是,如果在這種情況發生時屏幕上出現模式,那麼任何消除它的努力都會導致奇怪的行爲(如白屏)。

我已經嘗試在新重新創建的控制器上調用[self.presentedViewController dismissViewControllerAnimated];,但presentedViewController是你想象的零。

我也試着保留對模態視圖控制器的弱引用,然後當提交VC重新加載時,將此值設置爲舊VC的值。這讓我打電話self.customModalVC dismissViewControllerAnimated];,但這是導致上述白屏,也許是因爲它提出VC不再在堆棧中?

任何和所有建議表示讚賞。

+0

爲什麼每30秒重新創建一次?這聽起來有點奇怪。我現在也看到了保持這種模式視圖呈現的方式,而不需要引用它,這可能會導致內存問題,因爲您需要持有ref的viewController來保存它。所以你最好的選擇聽起來像重構/改變這個。 – zero3nna

+0

這是由於網絡電話,我同意這是一個完全愚蠢的做法。不會是我的做法。看起來我沒有其他選擇,除了重構之外...... PM會喜歡去一張3d票的4小時票哈哈。 –

+0

是的,這聽起來像一個有趣的機票。 – zero3nna

回答

-1

嘗試導航控制器傳遞給新呈現的視圖控制器:

presentedVC.navigation = self.navigationController 

這個新創建的一個添加解僱

self.dismiss(animated: false) { 
       _ = self.navigation?.popViewController(animated: true) 
      } 
+0

UIViewController的'navigationController'屬性是隻讀的。 –

+0

此外,模態演示與導航堆棧相互排斥,因此沒有「彈出」和「推送」。 –

-1

我覺得你應該先提出視圖控制器,這將是最後一次在堆棧視圖層次結構上並調用dismiss在他身上,然後刪除父母的控制器 how to get top controller see here

+0

我已經對提出的視圖控制器有了一個參考,正如我在問題中非常清楚地說的。我叫解僱,並導致奇怪的行爲。請務必徹底閱讀這個問題。 –

+0

好的,對不起,從手機打開並遺漏了一些東西。無論如何,請解釋一下你是什麼意思'重新創建'控制器。並且爲什麼你在重新創建之前沒有關閉顯示的視圖控制器,否則你的視頻控制器應該知道他所提供的ViewControlle,並在關閉後出現 –

+0

好的,對不起,從手機打開並遺漏了一些東西。無論如何,請解釋一下你是什麼意思'重新創建'控制器。並且爲什麼你沒有在重新創建之前關閉提交的視圖控制器,否則你提交的vc應該知道他在哪個視圖上顯示,並且會在關閉後出現一個 –