如何在一个 tableView 上提供超过 2 个自定义单元格以进行聊天

Posted

技术标签:

【中文标题】如何在一个 tableView 上提供超过 2 个自定义单元格以进行聊天【英文标题】:How to give more than 2 custom cell on one tableView for chat 【发布时间】:2019-02-12 04:06:56 【问题描述】:

聊天 ui 的聊天图像有 3 种类型,即文本、图像和轮播。我需要为一个 tableView 制作 3 个自定义单元格吗?该怎么做?

【问题讨论】:

和单细胞一样 希望对您有所帮助UITableview with more than One Custom Cells with Swift 嗨,谢谢你的回答。我会试试的 【参考方案1】:

是的,您必须创建三个自定义单元格,以便使用第三方或 tableview 单元格内的集合视图。

例如:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 
  let cellIncomming = tableView.dequeueReusableCell(withIdentifier: "IncommingChatCell") as! IncommingChatCell
  let cellOutgoing = tableView.dequeueReusableCell(withIdentifier: "OutgoingChatCell") as! OutgoingChatCell

  let chatInfo = chatDataSourse[indexPath.row]
  if chatInfo.user == "receiver" 
    cellIncomming.chatLabel.text = chatInfo.chatString
    return cellIncomming
  else 
    cellOutgoing.chatLabel.text = chatInfo.chatString
    return cellOutgoing
  

【讨论】:

嗨,我有一个问题。 如果我的 api 响应没有发送者或接收者怎么办 "result": "output": [ "type": "text", "text": "Ini respons berbentuk teks", "speech": "Ini respons berbentuk teks" , "type": "text", "text": "Ini adalah teks yang dipakai sebagai dummy response untuk message type text", "speech": "Ini adalah teks yang dipakai sebagai dummy response untuk message type text" ] 嗨@amaulana 告诉您的后端人员提供任何东西(例如:userId 或发送者/接收者等),以便您可以识别聊天来自哪一方。在上面的 json 中,我看不到任何设置聊天气泡的方法。【参考方案2】:

在单元格中

if Condition1 
    let cell : CellOne! = tableView.dequeueReusableCell( withIdentifier: "CellOne") as? CellOne
    return cell
else if Condition2
    let cell : CellTwo! = tableView.dequeueReusableCell( withIdentifier: "CellTwo") as? CellTwo
    return cell
else
    let cell : CellThree! = tableView.dequeueReusableCell( withIdentifier: "CellThree") as? CellThree
    return cell

【讨论】:

以上是关于如何在一个 tableView 上提供超过 2 个自定义单元格以进行聊天的主要内容,如果未能解决你的问题,请参考以下文章

从 Tableview 单元格中获取超过一个 TextField 的值?

如何通过在iOS中进行JSON Pasing一次在tableview上显示不同的图像?

如何阻止 UITableview 一次滚动多个单元格

如何使用情节提要在 Tableview Cell 中为 2 个标签和一个图像视图设置约束?

在TableView上的域上显示resultArray

Tableview使用空数组获取索引超出范围