Я использую эту строку кода в приложении с XCode 10, чтобы уменьшить яркость индикатора домашнего экрана на iPhone X и связанных с ним безрамочных устройствах Apple.
override func prefersHomeIndicatorAutoHidden() -> Bool {
return true
}Самое забавное, что у меня есть копия этого приложения точный, и на одной копии код работает, в то время как код не компилируется:
Method does not override any method from its superclass
Действительно, когда я начинаю вводить «prefers ...», prefersHomeIndicatorAutoHidden появляется как свойство только для чтения, с одной стороны, в то время как оно отображается как метод, с другой стороны, и по умолчанию получает префикс переопределения.
Спасибо, что нашли время,
Лучший
РЕДАКТИРОВАТЬ С РЕШЕНИЯМИ благодаря @inokey
Решение 1.Проверьте развертывание (начиная с i0S 12, prefersHomeIndicatorAutoHidden нельзя переопределить как метод)
Решение 2:
override var prefersHomeIndicatorAutoHidden : Bool { return true }




Я предполагаю, что цель развертывания по умолчанию в Xcode 10 - 12, а ваш предыдущий проект - 11 или 10, поэтому он просто отражает изменения в API.
Изменения в SDK указывает, что это было изменено
Спасибо! И действительно, цель развертывания другая. Однако, когда я изменяю цель развертывания на 11, ошибка сохраняется. Кроме того, как мне теперь поступить с изменением? любая идея?
Попробуйте создать приложение еще раз после изменения целевого объекта развертывания, иногда оно не сразу отражает изменение в редакторе.
Я сделал и получаю сообщение "сбой сборки"
Где именно вы переопределяете эту переменную? Есть ли у вас какие-либо другие внешние зависимости, которые могут зависеть от предыдущей реализации этого свойства?
Я поставил его в конец, как раз перед закрывающей скобкой UIViewClass. Одно и то же место для обеих версий (той, которая работает, и той, которая не работает)
Вы имели в виду класс UIViewController? Вы используете какой-то настраиваемый контроллер представления, который может зависеть от внешних библиотек?
Я поместил его сюда: класс ViewController: UITableViewController {}. Никаких внешних библиотек. Я также дважды проверил редактор проекта, чтобы увидеть, могу ли я заметить разницу (в параметрах, связанных с развертыванием), но нет.
Хорошо, я немного запутался, но не могли бы вы повторить настройку, которая не работает? Я имею в виду версию iOS и где именно появляется ошибка.
Я отредактировал исходное сообщение. Я надеюсь, что это помогает. Еще раз спасибо за то, что нашли время !!!
Я могу показаться нубом, но с var это тоже не работает. :(
override var prefersHomeIndicatorAutoHidden { return true } не работает?
@Chris Он по-прежнему показывает ошибку, что не отменяет никаких свойств суперкласса?
Он выдал ту же ошибку, но на самом деле вы были очень близки !!! Правильный синтаксис: override var prefersHomeIndicatorAutoHidden : Bool { return true } Мне нужно было объявить тип, а затем написать закрытие {} Большое спасибо за то, что нашли время !!!
@Chris хорошо, что было указано в исходном ответе на снимке экрана, есть очевидная аннотация типа для сохраненного свойства. В любом случае, если проблема решена, примите ответ.
в Xcode 10 = Swift 4.2 (сентябрь 2018 г.)
Просто используйте приведенный ниже код:
override var prefersHomeIndicatorAutoHidden: Bool { return true }
Мне потребовались часы, чтобы понять, что мне нужно переопределить var, а не func. Спасибо, сэр!
@Repose, это показывает, насколько дерьмовая документация Apple. Их единственное пренебрежительное отношение, не говоря уже о чертовом примере, заставляет всех нас страдать и тратить время зря.
Отметьте цель развертывания в настройках проекта. Это может иметь какое-то отношение к версии iOS, установленной по умолчанию в Xcode 10.