波纹管是我的代码。在按下其中一个按钮的同时,我不断获取解包无值的错误。为什么会发生?在尝试创建代理时获取nil
ContainerViewController:
protocol ButtonTitleSenderProtocol: class {
func leftButtonTitle(title:String)
func rightButtonTitle(title:String)
}
class ContainerViewController: UIViewController { [...]
weak var delegate: ButtonTitleSenderProtocol?
@IBAction func leftButtonPressed(sender: AnyObject) {
let myTitle = myLeftButtonOutlet.currentTitle!
delegate!.leftButtonTitle(myTitle)
}
@IBAction func rightButtonPressed(sender: AnyObject) {
let myTitle = myRightButtonOutlet.currentTitle!
delegate!.rightButtonTitle(myTitle)
}
}
MyChatViewController:
class MyChatViewController: ChatViewController, ButtonTitleSenderProtocol{
[...]
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
let myVC = ContainerViewController()
myVC.delegate = self
}
func leftButtonTitle(title: String) {
addNewMessage(title)
}
func rightButtonTitle(title: String) {
addNewMessage(title)
}
}
因为你强迫解开! **不要做**。 “currentTitle”是“nil”或“委托”。调试您的代码以查看您必须有条件解包的位置。 – luk2302
在'prepareForSegue(segue:sender:)'你创建一个全新的'ContainerViewController'对象,这是否正常?你不使用'segue.destinationViewController'? – Larme
您不能使用默认初始化程序'()'创建任何'UIViewController'。您需要引用** real **对象,使用指定的初始化程序初始化,从segue或Interface Builder中的出口。 – vadian