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
}