项目中经常有这样的需求 ---- 同一个按钮有不同的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