我正在做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
}
我在故事板中有这个
标签左边的对象是按钮。
按钮图片在故事板中设置。
我不知道该怎么做,因为我没有多少经验。请帮帮我。
答案 0 :(得分:1)
尝试:
Class
设置为TasksCell
(在我的示例中,它是WorkTableViewCell
)。Module
字段,清空它,然后按Enter键。它应更改为Current - project_name_here
(例如,Current - Artistry
。这是一个应该是什么样子的屏幕截图。检查它以确保您按正确的顺序选择了正确的项目:
然后,从Connections Inspector中删除旧单元格(按钮,标签,所有内容)。选择单元格时执行该步骤,然后在选择视图控制器时(但在选择视图控制器时,仅删除"已完成"按钮的插座)。
最后,通过打开 TasksCell
类的代码(而不是 TaskViewController
)重新添加它们class(可能在TasksCell.swift
),直接在行下
class TasksCell: UITableViewCell {
(或类似),按住控件并拖动按钮,标签等,如下所示:
最后,完成创建新的网点仅从标签,按钮等到的TasksCell类,如前所述(参见在按下" connect")之前请注意以下内容:
根据需要更改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
}