通常每当我创建一个UITableViewController时,我习惯于所有具有相似数据类型和样式的项目。例如,图像列表,用户名行或类似的行。
我正在帮助某人处理项目,并且要求是在屏幕的每一侧都有聊天气泡。这很容易,因为基于用户,我可以相应地显示/隐藏气泡并在每行上分配文本。聊天气泡在某种意义上是相似的,它只是文本和时间戳。 "性质"这个泡泡是一样的,只是朝向左边或右边。
然而,增加复杂性的部分是,如果有人在特定时间加入聊天Feed,他们想要显示此内容。这是一个例子:
正如您所看到的,它是聊天气泡但是在晚上9:23,我必须显示这一新行,表明有人加入了Feed。
我想我的DTO /数据绑定对象现在看起来像这样:
从UI角度来看,实现此绑定的简单方法是什么?我是否以某种方式使用表格页脚?或者我需要添加这个"加入活动"标签到每个表格单元格,并在每种情况下隐藏它,直到有人真正加入?
答案 0 :(得分:1)
表视图可以显示多种类型的单元格。
大概你有一个自定义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
}
}