PreferredStatusBarStyle удален в Swift 3?
поэтому я недавно просто обновился до Xcode 8, и я просто получил эту ошибку для следующего кода.
Ошибка заключается в том, что метод не отменяет какой-либо метод из его суперклассов.
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return UIStatusBarStyle.lightContent
}
![введите описание изображения здесь]()
Я очень благодарен за помощь, спасибо!
Ответы
Ответ 1
В iOS 10 preferredStatusBarStyle
является свойством, а не методом. Поэтому вместо того, чтобы переопределить его с помощью объявления func
, как вы это сделали, вы переопределите getter с объявлением var
:
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
Сообщение об ошибке компилятора Swift здесь, вероятно, будет лучше - поскольку, похоже, ваша функция override func должна покрывать свойство, возможно, это может предложить это как исправление. Я бы рекомендовал подавать ошибку в Swift с открытым исходным кодом.
Ответ 2
iOS 10.0 API Diffs показывает, что метод UIViewController.preferredStatusBarStyle() -> UIStatusBarStyle
удален и добавлено свойство UIViewController.preferredStatusBarStyle
.
Аналогичным образом, с Xcode 8, вы можете right-click на любом UIViewController
в вашем коде, выберите Jump to Definition, а затем выполните поиск preferredStatusBarStyle
. Вы обнаружите, что preferredStatusBarStyle
теперь имеет следующее объявление:
@available(iOS 7.0, *)
open var preferredStatusBarStyle: UIStatusBarStyle { get }
Поэтому в следующем фрагменте кода показано, как переопределить preferredStatusBarStyle
с помощью Xcode 8/Swift 3:
override var preferredStatusBarStyle: UIStatusBarStyle {
get {
return .lightContent
}
}
Или, в гораздо более коротком и предпочтительном стиле:
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}