Внутри моей ViewController
, у меня есть два IBOutlets signUpButton
и memberButton
, и оба кнопок связаны с тем же signUpOrMemberButtonPressed()
IBAction FUNC. Я пытаюсь установить свойство highlighted
на эти 2 кнопки, поэтому я могу сделать последующую работу соответственно в моей функциональной команде IBAction submitPressed()
. Но я заметил странное поведение между signUpOrMemberButtonPressed()
и submitPressed()
IBActions. После нажатия на signUpButton
или memberButton
, кнопка была подсвечена внутри моего signUpOrMemberButtonPressed()
, но к моменту ее выполнения submitPressed()
отладка показала, что она не подсвечена. Вот мой signUpOrMemberButtonPressed()
:Не может вручную установить выделенное состояние UIButton в методе IBAction
@IBAction func signUpOrMemberButtonPressed(sender: AnyObject) {
var button = sender as UIButton
button.highlighted = true
if signUpButton.highlighted {
memberButton.highlighted = false
} else {
signUpButton.highlighted = false
}
if (signUpButton.highlighted) {
println("signUpButton is highlighted inside 1st button")
} else if (memberButton.highlighted) {
println("memberButton is highlighted inside 1st button")
} else {
println("nothing is highlighted inside 1st button")
}
}
submitPressed
Моя функция:
@IBAction func submitPressed(sender: AnyObject) {
if (signUpButton.highlighted) { println("signUpButton is highlighted inside 2st button") }
else if (memberButton.highlighted) { println("memberButton is highlighted inside 2st button") }
else { println("nothing is highlighted inside 2nd button")
}
При запуске мое приложение, я постучал по memberButton
, а затем постучал кнопку отправки. Здесь выведен журнал:
memberButton is highlighted inside 1st button
nothing is highlighted inside 2nd button
Ничего не было установлено для запуска между этими двумя вызовами func.
Хорошо знать автоматическое отключенное поведение этого 'highlighted' свойства, после пользовательского крана. Я думаю, автоматическое отключение происходит после 'mysignUpOrMemberButtonPressed()'? Я не понимаю, как именно 'dispatch_async (dispatch_get_main_queue()) работает ... Как код знает, когда он пытается установить свойство' highlight' снова в главной очереди, это свойство 'highlight' уже было автоматически отключено? Также почему код не отменяет это же свойство автоматически 2-го раза в блоке 'dispatch_async'? – toadead
Вызов 'dispatch_async' в основном вызывает запуск кода внутри вызова' dispatch_async' после завершения всего остального. Если вы поместите контрольную точку внутри вызова 'dispatch_async' и один сразу после нее, вы увидите, что точка останова, которая приходит после этого, попадает первым, а затем тот, который находится внутри вызова' dispatch_async', получает удар после этого. – Jawwad
Посмотрите, будет ли свойство 'selected' кнопки (вместо' highlight') работать для вас. Это свойство, которое на самом деле должно использоваться, если вы хотите показать, что кнопка находится в выбранном состоянии, и вы не столкнетесь с этой проблемой. Он будет выглядеть несколько иначе визуально, поэтому попробуйте. – Jawwad