我正在开发一个即时通讯应用程序。用户可以使用自定义tableview单元格内的UITextView发送文本消息。用户应该能够发送各种多媒体数据,例如图像,文档和视频。
在我的表视图单元格中,我在stackView中有一个textView和一个UIImageView,我可以发送各自的数据类型。如果没有文本,我隐藏TextView。如果没有图像,我隐藏图像。
问题是:为了扩展应用程序,我必须为文档添加一个新容器,为视频添加另一个容器,为音频文件添加另一个容器,并隐藏所有其他没有添加数据的容器。这是一个垃圾解决方案,但它是我发现的唯一一个。
从后端知道发送了什么类型的数据,我怎么能以编程方式添加容器视图,我在那里进行设置?我正在考虑将textView作为默认值,并将一个空视图和内部cellForRowAt添加所需的元素。
我会尝试通过检查标准来创建几个在cellForRowAt中出列的单元格,例如:
if userPost.images != nil {
let cell = tableView.dequeueReusableCell(withReuseIdentifier: "Identifier1", for: indexPath) as! UITableViewCell
return cell
} else {
let cell = tableView.dequeueReusableCell(withReuseIdentifier: "Identifier2", for: indexPath) as! UITableViewCell
return cell
}
使用此解决方案,您可以创建一个非常适合用户发送给另一个用户的数据的单元格。只需检查您想要的任何标准并返回相应的单元格。
希望它有所帮助!