如何更改重复单元格中的按钮图像?

时间:2017-01-01 22:37:51

标签: ios swift uitableview

我正在做todolist应用程序,我需要对按钮执行操作,按下该按钮会更改我点击它的单元格中的图像。 Cell将数据从Firebase检索到UITableView。我使用了按钮和图像插座,并且都报告了此错误:

  

从TaskViewController到UIButton的按钮无效。奥特莱斯无法连接到重复内容。

我有这个代码用于检索数据到单元格:

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "TasksCell", for: indexPath) as! TasksCell

    let arrayTasks = tasks[indexPath.row]

    cell.taskName.text = arrayTasks.content

    return cell
}

我在故事板中有这个

enter image description here

标签左边的对象是按钮。

按钮图片在故事板中设置。

我不知道该怎么做,因为我没有多少经验。请帮帮我。

3 个答案:

答案 0 :(得分:1)

尝试:

  1. 打开Identity Inspector。
  2. 单击原型单元格。
  3. Class设置为TasksCell(在我的示例中,它是WorkTableViewCell)。
  4. 点击Module字段,清空它,然后按Enter键。它应更改为Current - project_name_here(例如,Current - Artistry
  5. 这是一个应该是什么样子的屏幕截图。检查它以确保您按正确的顺序选择了正确的项目:

    instructions image

    然后,从Connections Inspector中删除旧单元格(按钮,标签,所有内容)。选择单元格时执行该步骤,然后在选择视图控制器时(但在选择视图控制器时,删除"已完成"按钮的插座)。

    delete the old outlet(s)

    最后,通过打开 TasksCell类的代码(而不是 TaskViewController )重新添加它们class(可能在TasksCell.swift),直接在行下

    class TasksCell: UITableViewCell {
    

    (或类似),按住控件并拖动按钮,标签等,如下所示:

    create new outlets

    最后,完成创建新的网点仅从标签,按钮等的TasksCell类,如前所述(参见在按下" connect")之前请注意以下内容:

    new outlets

    根据需要更改Name。对于标签,它可能类似于taskName,对于按钮,可能类似于completedButton。请勿更改Type或任何其他字段。按" connect",您问题中的代码应该有效。

答案 1 :(得分:0)

在您的TasksCell类中,将按钮连接到单元格,您可以更轻松地访问它(是的,同意@ingraham,您无法将其连接到您的视图控制器):

class TasksCell: UITableViewCell {

    @IBOutlet weak var buttonCheckbox: UIButton!
    @IBOutlet weak var taskName: UILabel!
    @IBOutlet weak var updatedDate: UILabel!

}

答案 2 :(得分:0)

您可以使用图像视图作为按钮。您也可以使用此方法更改图像

override func tableView(_ tableView: UITableView, didSelec tRowAt indexPath: IndexPath) {}

编辑:

我制作了一个表视图单元类:

class TableViewCell: UITableViewCell {

    @IBAction func bAction(_ sender: Any) {
         button.titleLabel?.text = "asdaf"
    }

    @IBOutlet weak var button: UIButton!
    override func awakeFromNib() {
       super.awakeFromNib()
     // Initialization code
}

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

    // Configure the view for the selected state
}

}

然后我编辑tableView函数:

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


       let cell: TableViewCell! = tableView.dequeueReusableCell(withIdentifier: "reuseIdentifier", for: indexPath) as? TableViewCell
       cell.textLabel?.text = "abc"
    // Configure the cell...

       cell.bAction(Any.self)
       return cell
}