单击后,TableViewCell内的UIButton无法设置图像

时间:2017-07-15 12:01:24

标签: ios swift uitableview swift3 uibutton

UITableViewCell内的按钮不会在其单击的方法中响应setImage方法。这是TableView的cellForRowAt部分。

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell=tableView.dequeueReusableCell(withIdentifier: "BroadcastViewCell", for: indexPath) as!BroadcastViewCell
    var show=self.week?[selectedIndex].shows?[indexPath.item]
    cell.myLabel.text=show?.programName
    if let resim=show?.thumbURL{
        cell.myImage.downloadImage(from: resim)
    }
    cell.notifyButton.tag = indexPath.row
    cell.notifyButton.setImage( UIImage(named:"icnAlarm"), for: .normal)
    cell.notifyButton.setImage( UIImage(named:"icnAlarmCheck"), for: .selected)

    if (self.notifications?.contains(where: {$0.identifier == (show?.airDate)!+(show?.airTime)!}))!
    {
        cell.notifyButton.isSelected=true
    }else
    {
        cell.notifyButton.isSelected=false
    }
    cell.notifyButton.addTarget(self, action: #selector(buttonClicked(sender:)), for: .touchUpInside)
    return cell;
}

我只是在buttonClicked实现中设置了所选状态。

func buttonClicked(sender:UIButton)
{
    sender.isSelected=true
}

但是图像在它之后没有变化。它仅在其特定行的cellForRowAt方法调用之后更改。我不明白为什么它对同一代码部分的反应不同。谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

你必须告诉按钮该做什么:

func buttonClicked(sender:UIButton)
{
    if myButton.isSelected {
         myButton.isSelected = false
    }else{
       myButton.isSelected = true
    }
}

将您的按钮配置为自定义:

let myButton = UIButton(type: .custom)

或在属性检查器中:

attributes Inspector forbutton