UITableViewCell 在实现为 UITableView 的 FooterView 时无法识别按钮的操作,具有多个页脚视图
UITableViewCell doesn't recognise action of button when implemented as a FooterView for the UITableView, with multiple footer views
我正在尝试将 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
}
在此先感谢您的帮助
更好的方法可能是使用闭包/回调,但要解释发生了什么...
这一行:
return cell.contentView
您正在返回单元格的 视图。来自单元格 class 的代码消失了,因为 cell
在那个时候超出了范围。
尝试返回单元格本身:
return cell
看看你的运气好不好
我正在尝试将 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
}
在此先感谢您的帮助
更好的方法可能是使用闭包/回调,但要解释发生了什么...
这一行:
return cell.contentView
您正在返回单元格的 视图。来自单元格 class 的代码消失了,因为 cell
在那个时候超出了范围。
尝试返回单元格本身:
return cell
看看你的运气好不好