我正在开发即时通讯应用程序。用户可以使用自定义tableview单元格内的UITextView发送文本消息。用户应该能够发送各种多媒体数据,例如图像,文档和视频。
在我的表视图单元格中,stackView中同时具有textView和UIImageView,并且可以发送各种数据。如果没有文本,我将隐藏TextView。如果没有图像,我将隐藏图像。
问题是:要扩展应用程序,我必须添加一个新的文件容器,另一个用于视频的容器,另一个用于音频文件的容器,并隐藏所有未添加数据的其他容器。这是一个垃圾解决方案,但这是我发现的唯一解决方案。
从后端知道发送了哪种数据,如何以编程方式添加一个容器视图,以便在其中进行设置?我正在考虑将textView作为默认值,并将空视图和cellForRowAt内部添加所需的元素。
答案 0 :(得分:1)
我会尝试通过检查条件来创建几个要在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
}
使用此解决方案,您可以创建一个非常适合用户发送给另一个用户的数据的单元格。只需检查所需的任何条件,然后返回相应的单元格即可。
希望它有所帮助!