【问题标题】:Add UIView at bottom of UITableViewCell programmatically以编程方式在 UITableViewCell 底部添加 UIView
【发布时间】:2019-08-11 06:09:35
【问题描述】:

我正在开发一个即时通讯应用程序。用户可以发送文本消息,为此我在自定义 tableview 单元格中使用 UITextView。用户应该能够发送各种多媒体数据,例如图像、文档和视频。

在我的表格视图单元格中,我在 stackView 中有一个 textView 和一个 UIImageView,我可以发送各自类型的数据。如果没有文本,我隐藏 TextView。如果没有图片,我就隐藏图片。

问题是:要扩展应用程序,我必须为文档添加一个新容器,为视频添加另一个容器,为音频文件添加另一个容器,并隐藏所有其他未添加数据的容器。这是一个垃圾解决方案,但它是我找到的唯一一个。

知道从后端发送了什么样的数据,我如何以编程方式添加一个容器视图,以便我在其中进行现场设置?我正在考虑将 textView 作为默认值,并在 cellForRowAt 内添加一个空视图,只需添加所需的元素。

【问题讨论】:

  • 您可以为各自的消息使用不同的单元格。不要使细胞浑浊。这将是 TableViewCell 中垃圾 UI 控件的最佳解决方案。

标签: ios swift uitableview uiimageview chat


【解决方案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
            }

使用此解决方案,您可以创建一个非常适合用户发送给其他用户的数据的单元格。只需检查您想要的任何标准并返回相应的单元格。

希望对您有所帮助!

【讨论】:

  • 好吧,我已经有 2 个自定义单元格:一个用于发送消息,一个用于接收消息,因为 UI 有点不同。按照你的方式,我不会有双倍的自定义单元格用于数据显示吗? 2个用于图像,2个用于2个文档,2个用于音频文件,2个用于视频。我只是希望也许有一个更清洁的解决方案来完成这样的任务......
  • 您可以使用继承:您有一个基本单元格(例如用户名和消息)和其他单元格。另一个单元格可以在文本之外有一个图像。这意味着,图像单元格继承自标准单元格,然后您只需通过添加图像来扩展它。根据你最初的问题:是的,你会有很多细胞,但我不确定你是否可以改变它。我的意思是,您可以计算单元格所需的视图高度,然后在 sizeForItemAt 中相应地设置大小,并在 cellForRowAt 中添加视图。
猜你喜欢
  • 2019-02-11
  • 2017-07-02
  • 2013-04-08
  • 2019-07-25
  • 1970-01-01
  • 1970-01-01
  • 2023-03-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多