2016-06-28 4 views
-1

Привет Я пытаюсь реализовать следующуюнажмите, чтобы выбрать затем UIButton нажмите, чтобы отменить UIButton

водопроводную UIButton для выбора и выделения фона затем нажмите ту же кнопку еще раз, чтобы отменить выбор UIButton фона в исходное состояние или другой цвет

мой код выглядит следующим образом:

@IBOutlet weak var case4Btn: UIButton! 

@IBAction func case4BtnClicked(sender: AnyObject) { //touch up inside 
    case4Btn.backgroundColor = UIColor.cyanColor() 
} 
@IBAction func case4BtnCancel(sender: AnyObject) { 
    case4Btn.backgroundColor = UIColor.lightGrayColor()//touch down 
} 

со следующим кодом, когда я нажимаю, когда он выбирает и выделяет кнопку UIButton, когда я нажимаю снова меняет цвет бутон не отмените, чтобы для меня, чтобы отменить выбор у меня есть к та р и, удерживая оттаскивать от кнопки для того, чтобы изменить цвет или вернуться в исходное состояние

Пожалуйста, помогите, как это сводит меня с ума, то, что, кажется, так просто кажется, так трудно

Спасибо заранее

ответ

0

Для 1 Кнопка

var buttonState = "cyan" 
//the color the button should be when pressed 

@IBOutlet weak var case4Btn: UIButton! 
//the button 

@IBAction func case4BtnClicked(sender: AnyObject) { 
    //touch up inside 
    if(buttonState == "cyan"){ 
     //if the button is supposed to be cyan 
     case4Btn.backgroundColor = UIColor.cyanColor() 
     //set the background color 
     buttonState = "gray" 
     //set it to be gray next time 
    } 
    else{ 
     //if it isn't 
     case4Btn.backgroundColor = UIColor.grayColor() 
     //set the background color 
     buttonState = "cyan" 
     //make it become cyan next time 
    } 
} 

для нескольких кнопок

var button1State = "cyan" 
var button2State = "cyan" 
var button3State = "cyan" 
//the color the buttons should be when pressed 

@IBOutlet weak var case4Btn1: UIButton! 
@IBOutlet weak var case4Btn2: UIButton! 
@IBOutlet weak var case4Btn3: UIButton! 
//the buttons 

@IBAction func case4Btn1Clicked(sender: AnyObject) { 
    //touch up inside 
    if(button1State == "cyan"){ 
     //if the button is supposed to be cyan 
     case4Btn1.backgroundColor = UIColor.cyanColor() 
     //set the background color 
     button1State = "gray" 
     //set it to be gray next time 
    } 
    else{ 
     //if it isn't 
     case4Btn1.backgroundColor = UIColor.grayColor() 
     //set the background color 
     button1State = "cyan" 
     //make it become cyan next time 
    } 
} 
@IBAction func case4Btn2Clicked(sender: AnyObject) { 
    //touch up inside 
    if(button2State == "cyan"){ 
     //if the button is supposed to be cyan 
     case4Btn2.backgroundColor = UIColor.cyanColor() 
     //set the background color 
     button2State = "gray" 
     //set it to be gray next time 
    } 
    else{ 
     //if it isn't 
     case4Btn2.backgroundColor = UIColor.grayColor() 
     //set the background color 
     button2State = "cyan" 
     //make it become cyan next time 
    } 
} 
@IBAction func case4Btn3Clicked(sender: AnyObject) { 
    //touch up inside 
    if(button3State == "cyan"){ 
     //if the button is supposed to be cyan 
     case4Btn3.backgroundColor = UIColor.cyanColor() 
     //set the background color 
     button3State = "gray" 
     //set it to be gray next time 
    } 
    else{ 
     //if it isn't 
     case4Btn3.backgroundColor = UIColor.grayColor() 
     //set the background color 
     button3State = "cyan" 
     //make it become cyan next time 
    } 
} 
+0

skunkmb спасибо вам, что вы не знаете, как долго я пытался это сделать, работал шарм :) – Omar

+0

@Omar Нет проблем! Можете ли вы пометить мой ответ как правильный? – skunkmb

+0

Извините @skunkmb один последний вопрос, если я хотел применить то же самое к ряду UIButtons на той же странице, как это сделать, я попытался реплицировать ваш ответ с помощью различной кнопки, но он показывает ошибку, прося меня удалить " @IBOutlet "в начале каждого из моих UIButtons – Omar

0

Единственный законный жест - это Touch Up Inside. Удалите другое действие целиком. Используйте свойство Bool, чтобы отслеживать, в каком состоянии находится кнопка. Когда он используется, используйте оператор if, чтобы изменить цвет фона кнопки в соответствии с свойством Bool - и измените свойство Bool, чтобы оно соответствовало новому состоянию.

@IBOutlet weak var case4Btn: UIButton! 
var gray = true 
@IBAction func case4BtnClicked(sender: AnyObject) { //touch up inside 
    if gray { 
     case4Btn.backgroundColor = UIColor.cyanColor() 
    } else { 
     case4Btn.backgroundColor = UIColor.lightGrayColor() 
    } 
    gray = !gray 
} 
+0

Спасибо Matt, я очень новичок в Xcode и вам понадобятся некоторые указатели на то, как реализовать ваше вышеупомянутое предложение – Omar

1

Solution 1

Установить кнопку ОБА/цвет, текст, цвет всех государств текста либо из кода или от InterfaceBuilder, как указано ниже

button.setBackgroundImage(UIImage(named: "cyanColorImage"), forState: .Normal) 
button.setBackgroundImage(UIImage(named: "brownColorImage"), forState: .Selected) 

и обработать цель и изменить состояние кнопки только

@IBAction func buttonClickedHandle(sender: UIButton) 
{ 
    sender.selected = !sender.selected 
} 

Решение 2

Вы можете сделать это без дополнительной переменной. Для достижения этой цели

  • Для получения ваших предложений используйте свойство кнопки selected.
  • Вы также можете обрабатывать стиль кнопки с единственным свойством.
  • Вам не потребуется писать отдельный метод для всех кнопок, которые вам нужны. Просто напишите один метод для всех.

    @IBAction func buttonClickedHandle(sender: UIButton) 
    { 
        if sender.selected 
        { 
         sender.backgroundColor = UIColor.cyanColor() 
        } 
        else 
        { 
         sender.backgroundColor = UIColor.lightGrayColor() 
        } 
    
        sender.selected = !sender.selected 
    } 
    

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

Всего наилучшего!

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