2017-09-22 49 views
0

我有一個VC這樣如何限制按鈕點擊

enter image description here

對我有嵌入UIButtons,我就點擊改變自己的形象的複選框。這是我的代碼

@IBOutlet weak var bestSellerButton: UIButton! 
@IBOutlet weak var trendingButton: UIButton! 
@IBOutlet weak var lowToHighButton: UIButton! 
@IBOutlet weak var highToLowButton: UIButton! 

    var isBoxClicked = Bool() 

    func updateCheckImageOnClick(button: UIButton) { 
    if isBoxClicked == true { 
     isBoxClicked = false 
     button.setImage(UIImage.init(named: "checkmark"), for: UIControlState.normal) 
    } 
    else { 
     isBoxClicked = true 
     button.setImage(UIImage(), for: UIControlState.normal) 
    } 
} 


@IBAction func clickedBestSellerBtn(_ sender: Any) { 
    updateCheckImageOnClick(button: bestSellerButton) 
} 

@IBAction func clickedTrendingBtn(_ sender: Any) { 
    updateCheckImageOnClick(button: trendingButton) 
} 

同樣爲其餘兩個。現在,每當點擊獲得設置和取消設置時,複選標記圖像都會正確設置,但是我想限制用戶,如果他點擊了暢銷商btn,他無法選擇其他選項,同樣,如果他點擊趨勢圖,他將無法選擇任何其他。我會怎麼做?

func update(button: UIButton) { 
    isBoxClicked = !isBoxClicked 

    button.setImage(isBoxClicked ? UIImage(named: "checkmark") : UIImage(), for: UIControlState.normal) 

    if button == bestSellerButton { 
     trendingButton.isEnabled = false 
     lowToHighButton.isEnabled = false 
     highToLowButton.isEnabled = false 
    } else if button == trendingButton { 
     bestSellerButton.isEnabled = false 
     lowToHighButton.isEnabled = false 
     highToLowButton.isEnabled = false 
    } else if button == highToLowButton { 
     trendingButton.isEnabled = false 
     lowToHighButton.isEnabled = false 
     bestSellerButton.isEnabled = false 
    } else { 
     bestSellerButton.isEnabled = false 
     trendingButton.isEnabled = false 
     highToLowButton.isEnabled = false 
    } 
} 

回答

0

你可以爲了增加一些邏輯裏面,像重命名updateCheckImageOnClick(button: UIButton)的東西一般。 isUserInteractionEnabled = false

+0

可以請你更新它的單選按鈕,如果我選擇一個所有其他人都未選中? –

+0

每個按鈕應該是排他性的?我的意思是,highToLow按鈕應該禁用其他人呢? – Phillip

+0

是啊,如果最好的賣家被選中,所有其他的應該被取消選擇,而如果我點擊趨勢,暢銷書被選中,那麼暢銷書應該被取消選擇。即一次只有一個。 –

2

Usama我對所有這些按鈕都實現了一個簡單的按鈕操作,可以完成您的需要。下面是分步實施 -

首先,聲明這些變量 -

var buttonSelected:Bool = false 

var selectedButton : UIButton? 

,添加一個@IBAction所有按鈕 -

第三,這裏是行動方法 -

@IBAction func btnSelection(_ sender: UIButton) { 

    if(buttonSelected){ 

     if(selectedButton == sender){ 

      buttonSelected = false 

      selectedButton = nil 

      sender.setImage(UIImage(), for: UIControlState.normal) 

     } 
     else{ 

      // It's not the previously selected button 
      //Do your stuff 
     } 

    } 
    else{ 

     buttonSelected = true 

     selectedButton = sender 

     sender.setImage(UIImage.init(named: "checkmark"), for: UIControlState.normal) 

    } 

} 

希望它能幫助您開始。