2017-08-04 79 views
-1

在第四行,Xcode中試圖迫使我補充navigationController後?,即使我與?? 的默認值destinationViewController如果我加入?它要我用一個改變if let語法in代替as ...爲什麼xcode希望我使navigationController成爲一個可選項,當我有一個默認值?值剛過

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    var destinationViewController = segue.destination 
    if let navigationViewController = destinationViewController as? UINavigationController { 
     destinationViewController = navigationController.visibleViewController ?? destinationViewController 
    } 
+0

附註:'destinationViewController = navigationController.visibleViewController? destinationViewController'語句沒有意義。 – nayem

+0

它確實有意義。它是安全可選的展開'navigationController.visibleViewController'的簡寫,並且只有在展開成功時纔將其值分配給'destinationViewController'。 –

回答

0

試試這個代碼:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    var destinationViewController = segue.destination 
    if let navigationViewController = destinationViewController as? UINavigationController { 
     destinationViewController = navigationViewController.visibleViewController ?? destinationViewController 
    } 

您使用navigationController而不是導航查看控制器

相關問題