Nach unten ist mein Code. Ich bekomme ständig Fehler beim Auspacken von NULL-Werten, während ich einen dieser Knöpfe drücke. Warum passiert es?Wenn Sie versuchen, einen Delegierten zu erstellen, wird keine Eingabe gemacht.
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)
}
}
Weil Sie zwingen auspacken! ** Tu es nicht **. Entweder ist der 'currentTitle'' nil' oder der 'delegate' ist. Debuggen Sie Ihren Code, um zu sehen, wo Sie bedingt auspacken müssen. – luk2302
In 'prepareForSegue (shangue: sender:)' ist das ein ganz neues 'ContainerViewController' Objekt, ist das normal? Sie verwenden nicht 'segue.destinationViewController'? – Larme
Sie können keinen 'UIViewController' mit dem Standardinitialisierer'() 'erstellen. Sie benötigen den Verweis auf das Objekt ** real **, das mit dem angegebenen Initialisierer initialisiert wurde, aus dem Segment oder mit einem Ausgang in Interface Builder. – vadian