在自定义UITableViewCell中访问UIButton

时间:2016-09-13 05:54:36

标签: ios swift

我很困惑。

在我的cellForRowAtIndexPath方法中,我正在尝试设置UIButton标题:

不工作:

  cell?.react?.setTitle("\(currentObject.likes)", forState: UIControlState.Normal)

其中react是UIButton,这是我的UITableViewCell子类的子视图。

我似乎无法更新我的UIButton的标题。我发现修改它的唯一方法是通过我的UITableViewCell子类中的UITapGestureRecognizer,

工作:

func reaction(button : UIButton) {
    if button.imageView?.image == UIImage(named: "ic_favorite.png") {
        button.setImage(UIImage(named: "ic_favorite_border.png"), forState: UIControlState.Normal)
    } else {
    button.setImage(UIImage(named: "ic_favorite.png"), forState: UIControlState.Normal)
    }
}

3 个答案:

答案 0 :(得分:0)

创建一个自定义单元格(比如myCell),将该按钮添加为@IBOutlet,然后键入此let cell = tableView.dequeueReusableCellWithIdentifier("yourIdentifier", forIndexPath: indexPath) as! myCell

我认为您的问题是您没有将按钮链接到手机和手机。 XCode不知道你在说什么按钮。

答案 1 :(得分:0)

您应首先获得对您的单元格的引用,并将cellForRowAtIndexPath传递给您的方法。

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier("MyCellIdentifier", forIndexPath: indexPath) as! UIButton        
    // do anything with cell
    return cell
}

请记住为表格查看单元格设置标识符(UITableViewCell)。

答案 2 :(得分:0)

//尝试这样,首先在表格单元格中为该按钮添加标签

(cell?.contentView.viewWithTag(tag) as? UIButton)?.setTitle("\(currentObject.likes)", forState: UIControlState.Normal)