Ich habe ein Problem, einen Delegierten zu einem PopoverPresentationController Zuweisung mit Swift 2.2 in Xcode 7.3Nil Fehler Delegate Zuordnung PopoverPresentationController
Grund einen Delegierten der Verwendung wird Ich versuche, eine Funktion auszulösen, wenn außerhalb eines Popover Ansicht drücken (Klasse RedeemViewController), um zum Hauptmenü zurückzukehren (Klasse MenuViewController). Dies geschieht ohne einen Knopf. Die Funktion existiert in MenuViewController, aber es ist nicht relevant, was es jetzt tut, also habe ich gerade den Delegierungsteil eingefügt, wo der Fehler auftritt.
class MenuViewController: UIViewController, UIPopoverPresentationControllerDelegate {
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if (sender as! UIButton == btnRedeem) {
let rvc = segue.destinationViewController as! RedeemViewController
let nav = UINavigationController(rootViewController: rvc)
let popover = nav.popoverPresentationController
popover!.delegate = self
}
}
}
Drücken der Taste btnRedeem, zum Segue zu der Ansicht Popover verbunden, RedeemViewController, führt zu
fatale Fehler: unerwartet gefunden nil, während ein optionaler Wert
In Xcode Abwickeln, die Debugger zeigt auf
popover!.delegate = self
die Segue existiert und wird in der Storyboard genannt. Wenn Sie mit der rechten Maustaste auf die Ansicht klicken, werden keine Warnungen oder veralteten Referenzen angezeigt.
den Code Ersetzen Sie dabei mit
popover?.delegate = self
führt zu einem allgemeinen Fehler in dem der Debugger in AppDelegate stoppt:
libC++ abi.dylib: mit abgefangene Ausnahme vom Typ endet NSException
Ich schaute here, aber keine der möglichen Ursachen trifft zu. Ich habe eine generische AppDelegate.swift wie beschrieben here.
Jede Hilfe wird geschätzt! Ich habe meistens Beispiele mit Buttons gefunden, möchte aber keinen Button verwenden, um das Popover zu verlassen, da es nicht benötigt wird.
Weitere Informationen über die Delegation: die Funktion, die ich auf dem Hintergrund brauchen läuft
popoverPresentationControllerDidDismissPopover (popoverPresentationController: UIPopoverPresentationController)
zu überprüfen, wenn die Popover Ansicht (RedeemViewController) verlassen wird und die Funktion I Ich möchte darin auslösen, dass eine neue Schaltfläche angezeigt wird.
Vielen Dank für das Lesen und vielleicht können Sie mir helfen!
Cheers,
Floris
Danke für die Hilfe jrturton aber immer noch ich *** "fataler Fehler: unerwartet gefunden Null beim Auspacken eines optionalen Wertes" *** zeigt auf 'popover! .delegate = self' –
Wenn das der Fall ist dann gibt es keine Popover-Präsentation Controller. Wird dieser Ansichts-Controller tatsächlich in einem Popover angezeigt, wenn Sie auf diese Schaltfläche klicken? Arbeiten Sie an der richtigen Überleitung? – jrturton
Der RedeemViewController erscheint tatsächlich und es ist der richtige Übergang. In der if-Anweisung funktioniert es auch, wenn ich feststelle, welches Segment statt welcher Schaltfläche, also nicht auf das Segment verweist, das Problem ist. Wie in: 'if (segue.identifier ==" segueToRedeemPopover ") {// tu stuff}' Das Seque ist benannt und hat Popover als Typ. Der RedeemViewController ist nur ein gewöhnlicher UIViewController 'Klasse RedeemViewController: UIViewController, UITextFieldDelegate { }' –