2016-06-28 43 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的按鈕,當我再次點擊,爲了讓我取消我有到達P,保持和從按鈕拖走它改變顏色或恢復到原來的狀態

請幫助,因爲這是我逼瘋了,這東西似乎是如此簡單,似乎是這麼辛苦

謝謝提前

回答

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

唯一合法的手勢是觸摸在裏面。完全刪除你的其他動作。使用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

感謝馬特,我對Xcode很新,並且需要一些關於如何實現你上面提到的建議的指針 – Omar

1

解決方案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。你爲所有的按鈕執行相同的任務,那麼爲什麼不按照解釋重用代碼。

一切順利!