gpt4 book ai didi

ios - 添加对自定义单元格的支持后,MessageKit Collection View 不显示任何单元格

转载 作者:行者123 更新时间:2023-12-04 12:02:04 25 4
gpt4 key购买 nike

我已经阅读了在 MessageKit 中创建自定义单元格的指南 here ,以及诸如 this 之类的问题
我正在尝试创建一个自定义单元格;这是我从 UICollectionViewCell 继承的单元格的代码:

import UIKit
import MessageKit

open class ChatReferenceCell: UICollectionViewCell {

@IBOutlet weak var authorLabel: UILabel!
@IBOutlet weak var referenceText: UITextView!
@IBOutlet weak var participantsLabel: UILabel!

public override init(frame: CGRect) {
super.init(frame: frame)
setupSubviews()
}

public required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
setupSubviews()
}

open func setupSubviews() {
}

open override func layoutSubviews() {
super.layoutSubviews()
}

open func configure(with message: MessageType, at indexPath: IndexPath, and messagesCollectionView: MessagesCollectionView) {
// Do stuff
switch message.kind {
case .custom(let data):
guard let systemMessage = data as? String else { return }
referenceText.text = systemMessage
default:
break
}
}

}
这是自定义单元格的 XIB 文件:

在我的 ChatViewController ,我像这样设置聊天 View :
    messagesCollectionView.register(ChatReferenceCell.self)
messagesCollectionView = MessagesCollectionView(frame: .zero, collectionViewLayout: MyCustomMessagesFlowLayout())
messagesCollectionView.messagesDataSource = self
messagesCollectionView.messagesLayoutDelegate = self
messagesCollectionView.messagesDisplayDelegate = self
messagesCollectionView.messageCellDelegate = self
以及配置自定义布局:
open class CustomMessageSizeCalculator: MessageSizeCalculator {
open override func messageContainerSize(for message: MessageType) -> CGSize {
// Customize this function implementation to size your content appropriately. This example simply returns a constant size
// Refer to the default MessageKit cell implementations, and the Example App to see how to size a custom cell dynamically
return CGSize(width: 300, height: 130)
}
}


open class MyCustomMessagesFlowLayout: MessagesCollectionViewFlowLayout {
lazy open var customMessageSizeCalculator = CustomMessageSizeCalculator(layout: self)

override open func cellSizeCalculatorForItem(at indexPath: IndexPath) -> CellSizeCalculator {
let message = messagesDataSource.messageForItem(at: indexPath, in: messagesCollectionView)
if case .custom = message.kind {
return customMessageSizeCalculator
}
return super.cellSizeCalculatorForItem(at: indexPath);
}
}
在添加自定义单元格之前,我能够添加文本单元格并在聊天 View Controller 中按预期显示它们:

在尝试添加对自定义单元格的支持后,我得到了这样的布局:

编辑 由于我使用的是 NIB 文件,我尝试更正我注册单元格的方式,但仍然得到相同的结果: messagesCollectionView.register(UINib(nibName: "ChatReferenceCell", bundle: nil), forCellWithReuseIdentifier: "kChatReferenceCollectionViewCell")

最佳答案

试试这个方法。

messagesCollectionView = MessagesCollectionView(frame: .zero, collectionViewLayout: MyCustomMessagesFlowLayout()
messagesCollectionView.register(ChatReferenceCell.self)
super.viewDidLoad()
.....

关于ios - 添加对自定义单元格的支持后,MessageKit Collection View 不显示任何单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67405194/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com