Sie müssen Ankerpunkt für die popover schaffen, durch Eigenschaften Sourceview und sourceRect verwenden. Nutzen Sie die prepareForSegue func des präsentierenden Controller Eigenschaften des popover zu setzen wie unten:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "SegueIdentifier" {
let destController = segue.destinationViewController
let popover = destController.popoverPresentationController;
destController.popoverPresentationController!.delegate = self
destController.preferredContentSize = CGSize(width: 320, height: 186)
popover?.sourceView = self.button;
popover?.sourceRect = self.button.bounds
}
}
Sie auch preferredContentSize hier als diese Weise den Code modular aufgebaut ist und Ihre Inhalte View-Controller zur Verfügung stellen kann, kann an anderer Stelle verwendet werden auch.
In meinem Verständnis bedeutet das Verknüpfen des Pop-Over-Segments in storyBoard, dass Sie SourceView bereitstellen. Wie in den Apple-Dokumenten angegeben, verwenden Sie für die Bereitstellung von Ankerpunkten sourceView in Verbindung mit sourceRect. Ich vermute, wenn Sie SourceRect nicht bereitstellen (wie in Ihrem Fall mit Storyboards), nimmt OS den Ursprung der Ansicht, weshalb der Pfeil von Popover nicht korrekt ist. Die Angabe eines geeigneten SourceRect wird Ihr Ergebnis verbessern.
Können Sie Ihr Code-Snippet teilen, sonst wird es schwierig, das Problem zu analysieren? – SHN
@SHN Ich habe jetzt den Code –