swift - UICollectionViewCell 协议无法正常工作
问题描述
我的 CellClass 中有一个协议,用于检测函数“editCommentInFeed”。我在我的单元格中创建了一个“editButton”,并使用“editCommentField”定义了处理程序,该处理程序正在调用每个委托函数,并提供 2 个参数。这 2 个参数很重要,我需要来自单元格的这些信息来检测将来提供的操作。
例如,当按钮在单元格内被按下时,我试图打印一些东西。但是即使这个语句也没有执行。
//This is the Cell Class
protocol CommentFeedProtocol {
func editCommentInFeed(cell: CommentCell, comment: Comment)
}
class CommentCell: BaseCell {
var delegate: CommentFeedProtocol?
let editButton: UIButton = {
let editbttn = UIButton(type: UIButton.ButtonType.system)
editbttn.setImage(UIImage(named: "editButton"), for: UIControl.State.normal)
editbttn.addTarget(self, action: #selector(editCommentField), for: UIControl.Event.touchUpInside)
return editbttn
}()
override func setUpCell() {
super.setUpCell()
backgroundColor = UIColor.white
setUpCommentCell()
}
fileprivate func setUpCommentCell(){
addSubview(profileImageView)
addSubview(editButton)
addSubview(commentTextView)
addSubview(seperator)
profileImageView.anchor(top: topAnchor, left: leftAnchor, bottom: nil, right: nil, paddingTop: 8, paddingLeft: 8, paddingBottom: 0, paddingRight: 0, width: 40, height: 40)
profileImageView.layer.cornerRadius = 40/2
editButton.anchor(top: topAnchor, left: nil, bottom: bottomAnchor, right: rightAnchor, paddingTop: 5, paddingLeft: 0, paddingBottom: 5, paddingRight: 10, width: 45, height: 0)
commentTextView.anchor(top: topAnchor, left: profileImageView.rightAnchor, bottom: bottomAnchor, right: editButton.leftAnchor, paddingTop: 4, paddingLeft: 4, paddingBottom: 4, paddingRight: 4, width: 0, height: 0)
seperator.anchor(top: bottomAnchor, left: leftAnchor, bottom: nil, right: rightAnchor, paddingTop: 5, paddingLeft: 20, paddingBottom: 0, paddingRight: 20, width: 0, height: 1.5)
}
/*Objecthandler*/
@objc func editCommentField(){
guard let comment = comment else { return}
delegate?.editCommentInFeed(cell: self, comment: comment)
}
// This is the CollectionViewController
// As you can see I am also add the Protocol to the class
class CommentsController: UICollectionViewController, UICollectionViewDelegateFlowLayout, CommentFeedProtocol {
override func viewDidLoad() {
super.viewDidLoad()
navigationItem.title = "Kommentare"
postButton.imageView?.alpha = 0.5
postButton.isEnabled = false
collectionView.keyboardDismissMode = .interactive
collectionView.register(CommentCell.self, forCellWithReuseIdentifier: commentCell)
collectionView.alwaysBounceVertical = true
self.collectionView.backgroundColor = UIColor.white
fetchComments()
}
override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: commentCell, for: indexPath) as! CommentCell
cell.comment = comments[indexPath.item]
cell.delegate = self
return cell
}
// Here is the Delegate Function
func editCommentInFeed(cell: CommentCell, comment: Comment) {
print("Button was Pressed")
}
您可以在示例中看到我正在将协议添加到类中,并在类中调用函数。我没有收到错误消息。Button 仅在单击时轻轻悬停,但不执行任何操作?!
解决方案
推荐阅读
- html - mx-auto 用于移动屏幕,否则正常 flex
- amazon-web-services - 在 AWS 负载均衡器的请求中添加自定义标头
- android - Flutter中如何正确对齐左右子元素
- r - 从测试数据的预测中获取 RMSE 和 R2 时的问题
- kubernetes - uuidv4 在 Kubernetes 中发生新部署时更新
- debugging - google script 你可以使用 IDE 调试器单步调试一个调用的 google 脚本库吗
- javascript - 当我在 javascript 中使用自己的 sleep() 函数时,我使用快速排序算法的递归排序函数不起作用
- c++ - 我什么时候必须在 Qt 中包含 moc*.cpp?
- java - 构造函数有什么问题?
- express - Heroku 错误=H13“连接关闭而没有响应”状态=503