UITableViewCell 在实现为 UITableView 的 FooterView 时无法识别按钮的操作,具有多个页脚视图

Posted

技术标签:

【中文标题】UITableViewCell 在实现为 UITableView 的 FooterView 时无法识别按钮的操作,具有多个页脚视图【英文标题】:UITableViewCell doesn't recognise action of button when implemented as a FooterView for the UITableView, with multiple footer views 【发布时间】:2020-02-28 16:53:10 【问题描述】:

我正在尝试为我的应用程序中的每个单独部分添加一个 footerView。我已经成功添加了标题,因为它不需要任何按钮,但是当我尝试对我的 footerView 使用相同的实现时,必须有一个按钮可以正确识别被点击的部分,它没有不行。我将页眉和页脚视图都添加为 UITableView 中的原型单元格。 footerView 是 UITableViewCell 的子类,我在界面生成器中添加了按钮,即使是简单的打印语句也无法运行。

footerView 如何识别我正在按下按钮,以及它如何识别按下按钮的部分?

import UIKit

class FooterTableViewCell: UITableViewCell 


    override func awakeFromNib() 
        super.awakeFromNib()
        // Initialization code

    

    var footerDelegate:FooterTableViewCellDelegate?

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

        // Configure the view for the selected state
    



    @IBAction func addSetIsPressed(_ sender: UIButton) 

        print("Add Set is pressed")
        footerDelegate?.didAddSetIsPressed(cell:self)
    




protocol FooterTableViewCellDelegate 

    func didAddSetIsPressed(cell:FooterTableViewCell)

这是我的 Footertableviewcell 的实现

如您所见,我没有使用任何 nib 文件或以编程方式添加页脚,我使用了另一个 tableViewCell 并使用它的 view.contents 在 tableview 中显示它

这里我在我的 TableView 控制器中实现其余代码

class TableViewController: UITableViewController, ExerciseTableViewCellDelegate, UICollectionViewDelegate, UICollectionViewDataSource, FooterTableViewCellDelegate 


    func didAddSetIsPressed(cell: FooterTableViewCell) 

        print("Add set is pressed from delegate")
    

override func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? 

    let cell = tableView.dequeueReusableCell(withIdentifier: "footerCell") as! FooterTableViewCell
    cell.footerDelegate = self

    return cell.contentView

提前感谢您的帮助

【问题讨论】:

【参考方案1】:

更好的方法可能是使用闭包/回调,但要解释正在发生的事情......

用这一行:

return cell.contentView

您正在返回单元格的视图。单元类中的代码消失了,因为此时cell 超出了范围。

尝试返回单元格本身:

return cell

看看你是否有更好的运气。

【讨论】:

以上是关于UITableViewCell 在实现为 UITableView 的 FooterView 时无法识别按钮的操作,具有多个页脚视图的主要内容,如果未能解决你的问题,请参考以下文章

故事板:如何向原型 UITableViewCell 添加插座?

使用 AutoLayout 将 UIView 隐藏在单元格内时,不适合 UITableViewCell 高度

UITableviewcell的性能问题

UITableviewcell 是错误的数据

在“UITableViewCell”类型的对象上找不到属性

UITableViewCell:允许选择性删除