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是问题,我会发布另一条评论。谢谢你的时间。 –