0

Я пытаюсь сделать несколько вещей, которые включают переопределяющие методы в классах Яблоков. Более конкретно, я пытаюсь модифицировать анимацию, которая нажимает кнопку отмены UISearchController на экране, когда пользователь нажимает на панель поиска. Как бы то ни было, моя uisearchbar вместо заголовка навигационного элемента.Подчеркнутые свойства в классах Swift?

Однако у меня есть UIBarButton справа. Когда я нажимаю на панель поиска. кнопка отмены сдвигается с правого края панели поиска, с помощью кнопки правого бара, и элемент кнопки правой панели не перемещается. Я бы хотел, чтобы кнопка отмены скользила с края экрана.

С этой целью я начал искать способы подкласса панели поиска, чтобы изменить анимацию. Изучая память в консоли, я заметил, что почти все переменные начинаются с подчеркивания (_cancelBarButtonItem), и, более того, ни один из них не доступен.

Мои вопросы следующие: каковы эти переменные, могу ли я каким-либо образом получить к ним доступ, и в противном случае я могу переопределить их?

ответ

2
  1. Это частные переменные, которые Apple использует в своих классах (вы можете объявить свое собственное с помощью ключевого слова private). Это просто соглашение использовать знак подчеркивания перед их именем.
  2. Доступ к ним возможен с помощью Ключевое значение кодирования (KVC). В вашем случае, чтобы получить переменную, вы должны сделать следующее: webView.valueForKey("_cancelBarButtonItem")
  3. Если вы хотите их установить, вы можете сделать это: webView.setValue(value, forKey: "_cancelBarButtonItem") где value - это значение, которое вы хотите установить.

Примечание: Apple настоятельно рекомендует доступ к своим закрытым переменным, и это может получить ваше приложение отвергнута

Смежные вопросы