首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >UITableViewController和性质不同的项

UITableViewController和性质不同的项
EN

Stack Overflow用户
提问于 2018-06-02 22:18:28
回答 1查看 33关注 0票数 -1

通常,每当我创建UITableViewController时,我都习惯于所有项都具有相似的数据类型和样式。例如,一列图像,或多行用户名,或类似的东西。

我正在帮助某人做一个项目,要求在屏幕的两边都有聊天气泡。这很简单,因为基于用户,我可以相应地显示/隐藏气泡,并在每一行上分配文本。聊天气泡在某种意义上是相似的,它只是文本和时间戳。这个气泡的“性质”是一样的,只是朝向左边或右边。

然而,增加复杂性的部分是,如果有人在特定时间加入聊天提要,他们想要显示这一点。下面是一个示例:

如你所见,这是聊天气泡,但在晚上9:23,我必须显示这一新行,表明有人加入了提要。

我想我的DTO /数据绑定对象现在应该是这样的:

枚举文本: String //要显示的文本(if relevant)

  • userId: UUID //在this

  • actionDate:

  • 上“采取行动”的用户id //加入的时间,或TimeInterval (可以是this

  • actionDate: Int //或

  • -0表示他们加入了,1表示他们加入了,1表示他们加入了) //I可以让TimeInterval确定上下文用户,并确定聊天气泡是否出现在右边/左边。

然而,从UI的角度来看,实现这种绑定的简单方法是什么?我是否以某种方式使用了表尾?或者我只需要将这个"join event“标签添加到每个表单元,并在任何情况下都将其隐藏起来,直到有人真正加入?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-03 00:51:07

表格视图可以显示多种类型的单元格。

大概你有一个定制的ChatCell (或者至少你真的应该有)。它呈现聊天气泡,时间戳,你可以设置其对齐方式。

现在,您应该定义第二个自定义单元格,比如EventCell。它应该包含呈现事件所需的所有内容,例如有人加入。

一旦您拥有了不同类型的自定义单元格并将它们注册到表视图中,您只需相应地编写cellForRowAt代码即可。

代码语言:javascript
复制
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let someData = someModel[indexPath.row]
    if someData.actionType == .chatted {
        // create, setup and return a ChatCell
    } else {
        // create, setup and return an EventCell
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50657828

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档