通常,每当我创建UITableViewController时,我都习惯于所有项都具有相似的数据类型和样式。例如,一列图像,或多行用户名,或类似的东西。
我正在帮助某人做一个项目,要求在屏幕的两边都有聊天气泡。这很简单,因为基于用户,我可以相应地显示/隐藏气泡,并在每一行上分配文本。聊天气泡在某种意义上是相似的,它只是文本和时间戳。这个气泡的“性质”是一样的,只是朝向左边或右边。
然而,增加复杂性的部分是,如果有人在特定时间加入聊天提要,他们想要显示这一点。下面是一个示例:
如你所见,这是聊天气泡,但在晚上9:23,我必须显示这一新行,表明有人加入了提要。
我想我的DTO /数据绑定对象现在应该是这样的:
枚举文本: String //要显示的文本(if relevant)
然而,从UI的角度来看,实现这种绑定的简单方法是什么?我是否以某种方式使用了表尾?或者我只需要将这个"join event“标签添加到每个表单元,并在任何情况下都将其隐藏起来,直到有人真正加入?
发布于 2018-06-03 00:51:07
表格视图可以显示多种类型的单元格。
大概你有一个定制的ChatCell (或者至少你真的应该有)。它呈现聊天气泡,时间戳,你可以设置其对齐方式。
现在,您应该定义第二个自定义单元格,比如EventCell。它应该包含呈现事件所需的所有内容,例如有人加入。
一旦您拥有了不同类型的自定义单元格并将它们注册到表视图中,您只需相应地编写cellForRowAt
代码即可。
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
}
}
https://stackoverflow.com/questions/50657828
复制相似问题