使用Swift 3.這個問題一直存在,並且有很多例子。不幸的是他們都沒有爲我工作。我有一個擁有容器視圖的uiviewcontroller。這個容器視圖有一個segue到另一個視圖控制器。一切正確加載並且第一次正確顯示。我面臨的問題是我在主uiviewcontroller上有一個按鈕,通過點擊它,它將刷新容器視圖。這是問題所在。子控制器中的插座是零。容器視圖視圖控制器中的UIViewController調用函數
這是我如何試圖在子控制器中的所有功能。
let wcvc = self.storyboard!.instantiateViewController(withIdentifier: "WeatherCurrentViewController") as! WeatherCurrentViewController
wcvc.callJson()
在子控制器的標籤是像這樣
@IBOutlet var currentweather: UILabel!
但在被調用的函數,我得到意外發現零的錯誤,同時展開一個可選值,當我嘗試做
print(currentweather)
任何人都知道我能做些什麼來調用視圖控制器中的一個函數,該視圖控制器通過容器視圖中的segue加載並且仍然具有有效的插座?請讓我知道是否需要更多信息。
找到解決方案。我需要使用segues標識符而不是故事板。這樣做
private var currentEmbeddedViewController: WeatherCurrentViewController!
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if let cvc = segue.destination as? WeatherCurrentViewController, segue.identifier == "CurrentWeather" {
self.currentEmbeddedViewController = cvc
}
}
,並調用該函數在控制器中,像這樣
self.currentEmbeddedViewController.callJson()
是解決辦法。這question提供瞭解決方案。很抱歉浪費大家的時間。希望這會幫助別人。
可能的重複[Objective-c:如何調用容器視圖控制器中的方法](http://stackoverflow.com/questions/18321922/objective-c - 如何到調用法在容器 - 視圖 - 控制器) – dan