項目中經常有這樣的需求 ---- 同一個按鈕有不同的action,比如關注--未關注
其實UIButton有個方法removeTarget ,就是移除UIButton上的點擊事件。。
然后再根據你的app需求添加上對應的action。
/**
設置關注按鈕的action
*/
func setFocusButtonActionWithIsFocus(isFocus: Bool) {
//先移除按鈕上的操作行為--再根據不同情境添加不同的action
focusBtn.removeTarget(nil, action: nil, forControlEvents: .TouchUpInside)
switch isFocus {
case true:
//關注了,設置選中狀態。。
focusBtn.selected = true
focusBtn.backgroundColor = UIColor.orangeColor()
//此時添加,取消關注行為
focusBtn.addTarget(self, action: .cancelFocus, forControlEvents: .TouchUpInside)
case false:
//未關注,設置未選中狀態
focusBtn.selected = false
focusBtn.backgroundColor = UIColor.grayColor()
//此時添加,添加關注行為
focusBtn.addTarget(self, action: .focus, forControlEvents: .TouchUpInside)
}
}
這里我首選設置button的選中和未選中的文字,然后再點擊之后設置其狀態,然后立即移除uibutton行為,添加新的action
focusBtn.setTitle("關注", forState: .Normal)
focusBtn.setTitle("已關注", forState: .Selected)
demo已接上傳github。。。。大家可以去下載看看
https://github.com/guijie20140501/ButtonWithDifferentAction.git