UIPopoverBackgroundView contentViewInsets doit être implémenté par les sous-classurs

J'implémente un PopoverBackgroundView personnalisé, et comme spécifié dans la documentation de Swift je dois implémenter les methods comme suit:

class SettingsPopoverBackgroundView: UIPopoverBackgroundView { override var arrowOffset: CGFloat { get { return 0.0 } set { super.arrowOffset = newValue } } override var arrowDirection: UIPopoverArrowDirection { get { return UIPopoverArrowDirection.Up } set { super.arrowDirection = newValue } } func contentViewInsets() -> UIEdgeInsets { return UIEdgeInsetsMake(10, 10, 10, 10) } func arrowBase() -> CGFloat { return 2.0 } func arrowHeight() -> CGFloat { return 2.0 } } 

Cependant, je reçois toujours l'erreur:

UIPopoverBackgroundView contentViewInsets doit être implémenté par les sous-classurs.

Il semble qu'Apple ait une exception brouillée en ce qui concerne ce sous-classment, comme on peut le voir ici , car j'implémente contentViewInsets, mais je reçois toujours l'erreur.

C'est ainsi que je règle la class d'arrière-plan sur le popover dans la méthode prepareForSegue:

 popover.popoverBackgroundViewClass = SettingsPopoverBackgroundView.self 

Est ce bien?

Quelqu'un peut-il voir ce que je fais mal?

contentViewInsets() , arrowBase() et arrowHeight() sont toutes des fonctions de class, vous avez donc besoin de "override class" devant func pour celles-ci.

Pour arrowOffset et arrowDirection , les docs disent que vos methods ne doivent pas appeler super . Je ne sais pas exactement ce que vous devez mettre dans ces setters (cela dépend de ce que vous essayez de faire), mais si vous les laissez vides, l'application devrait fonctionner sans erreurs (bien que vous ne verrez pas une flèche ).