Ich habe einen View-Controller, der in einem Popover mit einem Storyboard-Segment präsentiert wird.Storyboard Popover entlassen, Delegate Methoden nicht aufgerufen
In dem präsentierenden View-Controller, ich den folgenden Code hatte:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if let svc = segue.destinationViewController as? SettingsViewController {
svc.popoverPresentationController?.delegate = self
}
}
stellt sich jedoch, dass die präsentierten View-Controller aus, auch wenn es als popover erscheint, hat eine modalPresentationStyle
von '.Modal
und daher ein nil
popoverPresentationController
. Seltsam!
Also, ich den Code wie folgt aktualisiert:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if let svc = segue.destinationViewController as? SettingsViewController {
svc.modalPresentationStyle = .Popover
svc.popoverPresentationController?.delegate = self
}
}
Der svc.popoverPresentationController
Delegierten jetzt eingestellt OK, aber wenn der popover vom Benutzer des Feldes verwiesen Klopfen außerhalb keiner der UIPopoverPresentationControllerDelegate
Delegatmethoden (zB popoverPresentationControllerShouldDismissPopover
sind .?. genannt Was bin ich
Wahrscheinlich eine dumme Frage, sind Sie sicher, dass der Übergang als „Geschenk gesetzt als Popover "im Storyboard? –
Ja, definitiv - und es stellt sich korrekt als Popover dar (und tat sogar vor dem Setzen von 'svc.modalPresentationStyle = .Popover'). Lohnt sich aber zu prüfen! –
Eine Sache ist seltsam, sollte es "Present as Popover" sagen, wie nur "Popover" sollte veraltet sein, aber ich glaube nicht, dass das das Problem ist ... –