2016-04-27 5 views
1

У меня есть вид MapKit, который первоначально загружается с карты Северной Америки.Как скрыть кнопку, объявленную с помощью @IBAction?

У меня есть кнопка на этом MapKit, на моей раскадровке в качестве изображения. Я подключил его к моему ViewController с помощью @IBAction.

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

Возможно ли как-то скрыть эту кнопку при начальной загрузке? Нужно ли ссылаться на действие на UIButton или наоборот?

+0

Вам нужен выход, а не действие, если вы хотите получить доступ кнопка. – rmaddy

+0

Если я это сделаю, как было бы лучшим способом вызвать функцию уменьшения масштаба нажатием кнопки? – 221b

+1

Действие предназначено для обращения с кнопкой. Выход предназначен для работы с кнопкой. – rmaddy

ответ

1

С @IBAction назначает функцию, а не объект, вы не можете использовать ее для доступа к UIButton до ее вызова.

Чтобы получить доступ к кнопке по желанию, вам необходимо сделать @IBOutlet в дополнение к @IBAction, который у вас есть, и привяжите к нему кнопку. Это позволит вам установить hidden свойство при необходимости:

button.hidden = YES; 
+0

Спасибо! Что было бы лучшим способом связать мой @IBOutlet с моим @IBAction? – 221b

+1

@ user1650978 Вы не привязываете друг к другу, вы связываете свой 'UIButton' и с помощью перетаскивания команд из IB в окно кода. – dasblinkenlight

0

Чтобы расширить ответ @ dashblinkenlight в:

IBAction является связью с управления на кусок кода, который запускаемый, когда пользователь запускает, что контроль ,

IBOutlet - это ссылка в другом направлении, от вашего кода до элемента управления.

Вам необходимо определить действие и ссылку из вашего элемента управления в исходный код, если вы хотите, чтобы элемент управления вызывал ваш код, когда пользователь взаимодействует с ним.

Вам необходимо определить выход и ссылку из исходного кода на ваш элемент управления, если вы хотите, чтобы ваш код взаимодействовал с элементом управления.

Поэтому вам иногда нужны оба, как в этом случае.

Интерфейс Builder имеет различные способы определения и соединения розеток. Самое простое, я нахожу, это поместить интерфейс Builder в основную область редактора и настроить помощник редактора в «автоматическом» режиме, чтобы он отображал заголовочный файл для контроллера вида, который определяет выбранный контроллер просмотра.

Затем я управляю перетаскиванием из элемента управления (или другого объекта вида) в файл заголовка и выбираю «выход». Xcode добавляет в исходный код объявление IBOutlet и делает соединение IBOutlet.

Я делаю то же самое для определения действий, только на этот раз я говорю IB, чтобы создать действие, а не выход. в этом случае Xcode создает объявление для IBAction enter code here в файле заголовка, а также пустой метод действия «заглушка» в файле .m.

(если вы используете Swift, то вы не имеете заголовка и реализации файлы, так что нет 2 места, чтобы определить действие.)

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