У меня отлично работает в Swift 4. Я заметил, что по умолчанию он устанавливает отправителя на Any вместо AnyObject, но оба по-прежнему работают .... Какую ошибку вы получаете?
Кривенц 05
Для ясности, возможно, вам следует указать в своем ответе выше, что IBOutlet требуется для работы вашего кода. Меня смутило, нужен был IBOutlet или нет. Понятно, что это необходимо.
Для работы не требуется. Вы можете ввести кнопку приведения в действие в IBAction и изменить включенный статус или, если вы настроили его как IBOutlet, вы можете сделать это с помощью .notation на выходе. Оба способа работают.
Кривенц 07
Я действительно считаю, что IBOutlet необходим, если вы хотите отключить кнопку из другой функции.
Для тех, кто погуглил "отключить кнопку", но может иметь более тонкие варианты использования:
Отключить с визуальным эффектом: как говорили другие, это предотвратит нажатие кнопки, и система автоматически сделает ее отключенной:
yourButton.isEnabled =false
Отключить без визуального эффекта: вы используете кнопку в том случае, когда она должна выглядеть нормально, но не реагировать на прикосновения? Попробуй это!
yourButton.userInteractionEnabled =false
Скрыть без отключения: этот подход скрывает кнопку, не отключая ее (невидима, но ее все еще можно нажать):
yourButton.alpha =0.0
Удалить: это полностью удалит представление:
yourButton.removeFromSuperView()
Нажмите что-нибудь за кнопкой: две кнопки сложены друг с другом, и вы хотите, чтобы верхняя кнопка временно действовала так, как будто ее там нет? Если вам снова не понадобится верхняя кнопка, удалите ее. Если он вам снова понадобится, попробуйте уменьшить его высоту или ширину до 0!
Вы знаете, почему я получаю эту ошибку? Value of type '(AnyObject) -> ()' has no member 'isEnabled'
Я также получаю сообщение об ошибке, если меняю (_ sender: )на UIButton. Ошибка гласит:Value of type '(UIButton) -> ()' has no member 'isEnabled'
0
Скажем, в Swift 4 у вас есть кнопка, настроенная для перехода, как IBActionэто, @IBAction func nextLevel(_ sender: UIButton) {}
и у вас есть другие действия, происходящие в вашем приложении (например, таймер, gamePlay и т. Д.). Вместо того, чтобы отключать кнопку перехода, вы можете дать своему пользователю возможность использовать этот переход, пока другие действия все еще выполняются, и БЕЗ СБОЯ ПРИЛОЖЕНИЯ . Вот как:
var appMode =0@IBActionfunc mySegue(_ sender:UIButton){if appMode ==1{// avoid crash if button pressed during other app actions and/or conditions
let conflictingAction = sender asUIButton
conflictingAction.isEnabled =false}}
Обратите внимание, что у вас, вероятно, будут другие условия внутри if appMode == 0и / или if appMode == 1которые все еще будут возникать и НЕ будут конфликтовать с mySegueкнопкой. Таким образом, ИЗБЕЖАНИЕ АВАРИИ .
Если вы попробуете свой код, должна произойти эта ошибка:Value of type '(AnyObject) -> ()' has no member 'isEnabled'
Я думаю ты имеешь в виду yourButton(sender: UIButton). Ваш обновленный код, скорее всего, вызовет следующую ошибку:Value of type '(UIButton) -> ()' has no member 'isEnabled'
Если вы хотите, чтобы кнопка оставалась неподвижной без появления «нажатой»:
Помните:
1) Ваш
IBOutlet
->@IBOutlet weak var editButton: UIButton!
2) Код выше входит в
viewWillAppear
источник
Я делаю это следующим образом:
IBAction связан с вашей кнопкой в раскадровке.
Если ваша кнопка настроена как розетка:
Затем вы можете получить доступ к включенным свойствам с помощью. обозначение в названии кнопки:
источник
Отключить кнопку на Swift 3:
источник
Для тех, кто погуглил "отключить кнопку", но может иметь более тонкие варианты использования:
Отключить с визуальным эффектом: как говорили другие, это предотвратит нажатие кнопки, и система автоматически сделает ее отключенной:
Отключить без визуального эффекта: вы используете кнопку в том случае, когда она должна выглядеть нормально, но не реагировать на прикосновения? Попробуй это!
Скрыть без отключения: этот подход скрывает кнопку, не отключая ее (невидима, но ее все еще можно нажать):
Удалить: это полностью удалит представление:
Нажмите что-нибудь за кнопкой: две кнопки сложены друг с другом, и вы хотите, чтобы верхняя кнопка временно действовала так, как будто ее там нет? Если вам снова не понадобится верхняя кнопка, удалите ее. Если он вам снова понадобится, попробуйте уменьшить его высоту или ширину до 0!
источник
Вы можете включить / отключить кнопку с помощью свойства
isEnabled
илиisUserInteractionEnabled
.Разница между двумя:
isEnabled
является свойством UIControl (суперкласс UIButton) и имеет визуальные эффекты (т. е. выделены серым цветом) включения / выключенияisUserInteractionEnabled
является свойством UIView (суперкласс UIControl) и не имеет визуального эффекта, но достигает целиИспользование :
источник
Value of type '(AnyObject) -> ()' has no member 'isEnabled'
(_ sender: )
наUIButton
. Ошибка гласит:Value of type '(UIButton) -> ()' has no member 'isEnabled'
Скажем, в Swift 4 у вас есть кнопка, настроенная для перехода, как
IBAction
это,@IBAction func nextLevel(_ sender: UIButton) {}
и у вас есть другие действия, происходящие в вашем приложении (например, таймер, gamePlay и т. Д.). Вместо того, чтобы отключать кнопку перехода, вы можете дать своему пользователю возможность использовать этот переход, пока другие действия все еще выполняются, и БЕЗ СБОЯ ПРИЛОЖЕНИЯ . Вот как:Обратите внимание, что у вас, вероятно, будут другие условия внутри
if appMode == 0
и / илиif appMode == 1
которые все еще будут возникать и НЕ будут конфликтовать сmySegue
кнопкой. Таким образом, ИЗБЕЖАНИЕ АВАРИИ .источник
Отключить кнопку в Swift 4 можно с помощью кода
источник
Value of type '(AnyObject) -> ()' has no member 'isEnabled'
yourButton(sender: UIButton)
. Ваш обновленный код, скорее всего, вызовет следующую ошибку:Value of type '(UIButton) -> ()' has no member 'isEnabled'