2017-05-31 15 views
0

我在tableview单元格中有一个标签。标签具有文本结尾的文本有一个按钮代表用户喜欢的按钮。一切都很好,但问题是hitForLike不fire.button点击事件不起火。我是否错过了什么带按钮的标签addTarget事件不会触发

var titleLabel : UILabel = { 
     var label = UILabel() 
     label.font = UIFont.systemFont(ofSize: 21) 
     label.translatesAutoresizingMaskIntoConstraints = false 
     return label 
    }()  

func hitForLike(_ sender : UIButton){ 

     print("i miss you ....") 

    } 

func titleWithLikeButton(title:String,isFavorite : Bool){ 

      titleLabel.text = title 

     let button = UIButton(frame: CGRect(x: titleLabel.intrinsicContentSize.width, y: 0, width: 44, height: 44)) 

     //setup your button here 
     button.setTitleColor(UIColor.red, for: UIControlState.normal) 
     let image = UIImage(named: "heart-empty.png") 
     button.setImage(image, for: UIControlState.normal) 

     button.addTarget(self, action: #selector(hitForLike(_:)), for: UIControlEvents.touchUpInside) 

     //Add the button to the text label 
     titleLabel.addSubview(button) 

} 
+2

集label.userinteractionenabled ==真和检查 –

+0

感谢@ Anbu.Karthik –

回答

1

我认为你需要让用户交互的标签上,就像这样:

titleLabel.isUserInteractionEnabled = true 

所以整个函数结束这样看:

func titleWithLikeButton(title:String,isFavorite : Bool){ 
    titleLabel.text = title 
    titleLabel.isUserInteractionEnabled = true //enable userinteraction 

    let button = UIButton(frame: CGRect(x: titleLabel.intrinsicContentSize.width, y: 0, width: 44, height: 44)) 

    //setup your button here 
    button.setTitleColor(UIColor.red, for: UIControlState.normal) 
    let image = UIImage(named: "heart-empty.png") 
    button.setImage(image, for: UIControlState.normal) 

    button.addTarget(self, action: #selector(hitForLike(_:)), for: UIControlEvents.touchUpInside) 

    //Add the button to the text label 
    titleLabel.addSubview(button) 
} 

希望有所帮助。

0

你必须设置你的按钮目标func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell,象下面这样:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 


     let cell = tableViewForPAC.dequeueReusableCell(withIdentifier: "TableViewCell", for: indexPath) as! TableViewCell 
     cell.yourButton.tag = indexpath.row 
     cell.yourButton.addTarget(self, action: #selector(hitForLike(_:)), for: UIControlEvents.touchUpInside) 
     return cell 

} 

func hitForLike(_ sender : UIButton){ 

     print(sender.tag) 
     print("i miss you ....") 

    }