Edit: Please note the question below discusses using delegation between 2 viewcontrollers that are also implemented in a UITabBarController.Swift代表團:意外地發現零,同時展開一個可選值
我已經在這裏和YouTube上進行了一些搜索,但沒有看到我的問題在其他地方複製。我會保持這一點。
我有編碼自己-not通過XCode-產生2個視圖控制器; TabOneController和TabTwoController
下面對於兩個編碼...
import UIKit
class TabOneController: UIViewController{
private let instanceOfTabOneView = TabOneView()
var vc1Delegate: fromOneToTwo!
override func loadView() {
super.loadView()
view.addSubview(instanceOfTabOneView.buildTheVu())
view.backgroundColor = UIColor.white
runThisOnce()
}
func runThisOnce(){
vc1Delegate.passTheValue(heroNameIs: "pass this to TabTwoController")
}
}
protocol fromOneToTwo{
func passTheValue(heroNameIs: String)
}
爲標籤2 ...
import UIKit
class TabTwoController: UIViewController, fromOneToTwo{
private let instanceOfTabTwoView = TabTwoView()
override func loadView() {
super.loadView()
view.addSubview(instanceOfTabTwoView.buildTheVu())
assignDelegateToSelf()
}
func assignDelegateToSelf(){
let instanceTabOne = TabOneController()
instanceTabOne.vc1Delegate = self
}
func passTheValue(heroNameIs:String){
instanceOfTabTwoView.txtFld.text = heroNameIs
}
}
我得到以下運行時錯誤-The應用程序構建成功 - ...
fatal error: unexpectedly found nil while unwrapping an Optional value
onfollo翼行...
vc1Delegate.passTheValue(heroNameIs: "pass this to TabTwoController")
當我註釋掉上面的行,應用程序構建和運行成功,但當然應用程序不執行的代表團。
我有點明白什麼是編譯器試圖告訴我,那
vc1Delegate
尚未實例-I guess-。但我在每一塊岩石下搜尋,似乎無法找到如何解決這個問題。
我會很感激的任何幫助或指導。對不起,如果我的代碼看起來不成熟,我是Swift和編程的新手。謝謝。
感謝您的答覆。我將用2個常規ViewController創建一個Xcode項目,並用變量替換所有UI控件。如果UITabController是問題,我會發布另一條評論。謝謝你的時間。 –