donc je viens de mettre à jour Xcode 8 et je viens de recevoir cette erreur pour le code suivant.
L'erreur est que la méthode ne substitue aucune méthode de ses superclasses.
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return UIStatusBarStyle.lightContent
}
J'apprécierais vraiment l'aide, merci!
Dans iOS 10, preferredStatusBarStyle
est une propriété, pas une méthode. Ainsi, au lieu de la remplacer par une déclaration func
comme vous l'avez fait, vous substituez le getter à une déclaration var
:
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
Le message d'erreur du compilateur Swift ici ici pourrait être probablement meilleur) - puisqu'il semble savoir que votre fonction de substitution est censée couvrir une propriété, elle pourrait probablement offrir cela comme solution. Je recommanderais rapporter un bogue à Swift open source .
Remarque: sous iOS 12, vous devrez peut-être également définir l'indicateur UIViewControllerBasedStatusBarAppearance
(ou "Afficher l'apparence de la barre d'état basée sur le contrôleur") dans votre Info.plist. Et vérifiez la hiérarchie de votre contrôleur de vue, car les contrôleurs de vue de conteneur tels que la navigation et la vue fractionnée pourraient ne pas le transmettre à partir de leurs enfants.
Le iOS 10.0 API Diffs indique que la méthode UIViewController.preferredStatusBarStyle() -> UIStatusBarStyle
a été supprimée et que le UIViewController.preferredStatusBarStyle
La propriété a été ajoutée .
De la même manière, avec Xcode 8, vous pouvez right-click sur n'importe quel UIViewController
de votre code, sélectionnez Jump to Definition puis effectuez une recherche pour preferredStatusBarStyle
. Vous découvrirez que preferredStatusBarStyle
a maintenant la déclaration suivante:
@available(iOS 7.0, *)
open var preferredStatusBarStyle: UIStatusBarStyle { get }
Par conséquent, l'extrait de code suivant montre comment remplacer preferredStatusBarStyle
avec Xcode 8/Swift 3:
override var preferredStatusBarStyle: UIStatusBarStyle {
get {
return .lightContent
}
}
Ou, dans un style beaucoup plus court et préféré:
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}