swift----tableview同一个UIButton带有不

2016-07-05  本文已影响161人  flyrr

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

上一篇下一篇

猜你喜欢

热点阅读