class Cell: UITableViewCell {
@IBOutlet weak var checkBtn : UIButton!
@IBAction func selectButton(_ sender: UIButton) {
if checkBtn.isSelected == false {
checkBtn.isSelected = true
} else {
checkBtn.isSelected = false
}
}
}
我有一个单元班。但是 IBAction 不起作用。
我还制作了一个如下所示的 ViewController
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "exampleCell") as! Cell
if cell.checkBtn.isSelected == true {
anEmptyArray.append(myTableViewData[indexPath.row])
} else {
}
}
如何获得选定的单元格?
uj5u.com热心网友回复:
您可以使用下面的表格视图委托方法,下面是代码。
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath){
anEmptyArray.append(myTableViewData[indexPath.row])
}
还要确保您的方法中有以下代码行viewDidLoad
。
tableView.delegate = self
使用这种方法,您只需选择单元格。就这样。
另一种方法
您需要创建新的委托。
protocol TableViewCellDelegate: AnyObject {
func didSelect(cell: YourTableViewCell) // Don't need to define just declare.
}
现在在类中创建一个委托实体UITableViewCell
,并在按钮操作中呼叫方法。
class Cell: UITableViewCell {
@IBOutlet weak var checkBtn : UIButton!
weak var delegate: TableViewCellDelegate? // Instance of Delegate protocol
@IBAction func selectButton(_ sender: UIButton) {
if checkBtn.isSelected == false {
checkBtn.isSelected = true
} else {
checkBtn.isSelected = false
}
self.delegate?.didSelect(cell: self) // triggering the delegate method.
}
}
现在将触发哪个代码?我们需要定义它。例如,转到您的 UITableViewController,并扩展该类
extension YourTableViewController: TableViewCellDelegate {
func didSelect(cell: YourTableViewCell) {
// Now you have the cell, and you can get the indexPath of this cell
if let indexPath = tableView.indexPath(for: cell) {
// Now you have indexPath and you know the drill.
// If you want to remove that cell delete that value from array and reload tableView.
myTableViewData.remove(at: indexPath.row)
tableView.reloadData()
}
}
}
不要忘记像下面那样制作 YourTableViewController 的单元格委托。
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "exampleCell") as! YourTableViewCell
cell.delegate = self
}
0 评论