UITutViewCell子类中的UIButton没有注册水龙头

时间:2015-03-07 22:40:55

标签: ios uitableview swift

我有一个我想要点击的收藏夹按钮,以便将单元格标记为收藏夹。细胞也是可以点击的。

这是UITableViewCell的子类。我添加了按钮,但是我无法调用目标操作。换句话说,我点击单元格中的按钮,但没有任何反应:

class ServerSelectionTableViewCell: UITableViewCell {

    let isSelected = UIImage(named: "icon.png")
    let unselected = UIImage(named: "star.png")
    var favoriteButton: UIButton? = nil

    var server : Server? = nil {
        didSet{
            if let theServer = server {
                var server : String? = theServer.serverCode
                self.textLabel?.text = serverCode
                server?.isActive() { success in
                    self.accessoryType = success ? .Checkmark : .None
                }
            }
        }
    }

    required init(coder aDecoder: NSCoder!) {
        super.init(coder: aDecoder)
    }

    override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
        super.init(style: .Subtitle, reuseIdentifier: reuseIdentifier)
        self.detailTextLabel?.textColor = UIColor.grayColor()
        self.favoriteButton = UIButton.buttonWithType(UIButtonType.Custom) as UIButton
        self.favoriteButton?.setImage(unselected, forState: UIControlState.Normal)
        self.favoriteButton?.setImage(isSelected, forState: UIControlState.Selected)
        self.favoriteButton?.addTarget(self, action: Selector("buttonAction:"), forControlEvents: UIControlEvents.TouchDown)

        setTranslatesAutoresizingMaskIntoConstraints(false)

        self.favoriteButton?.userInteractionEnabled = true
        self.contentView.addSubview(self.favoriteButton!)
    }

    func buttonAction(sender:UIButton!) {
        println("Button tapped")
    }

    override func layoutSubviews() {
        super.layoutSubviews()

        self.favoriteButton?.frame = CGRectMake(10, 5, 35, 35)
        self.textLabel?.frame = CGRectMake(55, 5, self.bounds.width, self.bounds.height)
    }

    override func setSelected(selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)

        // Configure the view for the selected state
    }

}

永远不会调用函数buttonAction。我已经在模拟器和设备上尝试了这一点,我可以看到,当我点击收藏夹按钮时,单元格未被选中,但该功能仍未被调用。

编辑:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let reuseId = "cell"
    tableView.registerClass(ServerSelectionTableViewCell.self, forCellReuseIdentifier: reuseId)
    var cell = tableView.dequeueReusableCellWithIdentifier(reuseId) as ServerSelectionTableViewCell

    if let servers = getServers() {
        let server = servers[indexPath.row]

        cell.server = server
    }

    return cell
}

override func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!) {
tableView.deselectRowAtIndexPath(indexPath, animated: true)
    if let servers = getServers() {
        let server = servers[indexPath!.row]
        var cell = tableView.cellForRowAtIndexPath(indexPath) as ServerSelectionTableViewCell

        println("Server selected \(server)")
    }
}

1 个答案:

答案 0 :(得分:0)

所以看起来按钮WAS注册了点击,但是

println("Button tapped")

实际上并没有打印到控制台,所以我认为它不是。