我在Storyboard中添加了UIButton
UITableViewCell
。当我按下时,应该调用一个动作:
@IBAction func modifyFavouriteStatus(sender: UIButton) {
favouriteBool = false
var emptyHeart = UIImage(named: "Red_Heart_Empty_x23px.png")?.imageWithRenderingMode(.AlwaysTemplate)
favouriteButton.setImage(emptyHeart, forState: UIControlState.Normal)
}
然而,调用方法didSelectRowAtIndexPath
。我希望只有当我按下单元格本身而不是按钮时才会调用它。
P.S。用户交互已在按钮上启用
编辑:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("SpotlightCell", forIndexPath: indexPath) as! SpotlightCell
let userObject = self.objectArray[indexPath.section] as! PFUser
cell.passedUser = userObject
if userObject["profileImage"] != nil{
let userImageFile = userObject["profileImage"] as! PFFile
let url = NSString(string:userImageFile.url!)
cell.profileImage.sd_setImageWithURL(NSURL(string: url as String), placeholderImage:UIImage())
}
if userObject["username"] != nil{
let username = userObject["username"] as! String
cell.labelName.text = username
}
//return cell
return cell
}
和
class SpotlightCell: UITableViewCell {
@IBOutlet weak var profileImage: UIImageView!
@IBOutlet weak var labelName: UILabel!
@IBOutlet weak var favouriteButton: UIButton!
var passedUser : PFUser!
var label : UILabel?
var favouriteBool = false
override func awakeFromNib() {
super.awakeFromNib()
self.selectionStyle = UITableViewCellSelectionStyle.None
self.contentView.backgroundColor = UIColor.clearColor()
self.backgroundColor = UIColor.clearColor()
}
...
//the IBAction was here before
}
答案 0 :(得分:0)
简单地说,UITableViewCells有一个contentView。这可以并且将被放置在自定义表格视图单元格中的其他视图之前,以便拾取触摸并检测单元格选择。这样做可能会阻止其后面的任何视图的触摸。通过执行cell.contentView.addSubview(cell.favouriteButton)修复错误。
请注意,在我的故事板中,favouriteButton已经显示为contentView的子视图,因此这可能会让您认为它是它的子视图。出于某种原因,它不是。