我没有找到一种方法来填充我的tableView而不使用像Periscope这样的部分在其应用程序中直播(我想他们确实喜欢这样)。 我有两个数组:一个用于评论,另一个用于加入房间的用户。
我想在下面的照片中看到与Periscope应用相同的结果:
你可以在这张照片中看到第一个单元格用于评论,第二个单元格用于刚进入房间的人(estlà=加入),Bruninette是她的昵称。
然后你可以看到其他一些用户评论这个现场和Bruninette加入的单元格上升到可见的第一个单元格
我认为Periscope使用2个数组,它们在tableView中混合使用。 有人可以帮我,我怎么能做同样的事情。 非常感谢你。
我的代码:
@IBOutlet weak var tableView: UITableView!
var socket: SocketIOClient!
var comments: [Comment] = []
var joinerArray: [Joiner] = []
override func viewDidLoad() {
super.viewDidLoad()
socket.on("comment") {[weak self] data ,ack in
let comment = Comment(dict: data[0] as! [String: AnyObject])
self?.comments.append(comment)
self?.tableView.reloadData()
}
socket.on("joiner") {[weak self] data ,ack in
let joiner = Joiner(dict: data[0] as! [String: AnyObject])
self?.joinerArray.append(joiner)
self?.tableView.reloadData()
}
}
override func viewWillAppear(_ animated: Bool) {
self.socket.emit("joiner", [
"roomKey": self.room.key,
"name": Auth.auth().currentUser?.displayName])
}
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
if string == "\n" {
textField.resignFirstResponder()
if let text = textField.text , text != "" {
self.socket.emit("comment", [
"roomKey": self.room.key,
"text": text,
"name": Auth.auth().currentUser?.displayName,
"photo": userImg])
}
textField.text = ""
return false
}
return true
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return comments.count + joinerArray.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if indexPath.row < comments.count {
let cell = tableView.dequeueReusableCell(withIdentifier: "commentCell", for: indexPath) as! CommentaireTableViewCell
cell.comment = comments[(indexPath as NSIndexPath).row]
cell.contentView.layer.cornerRadius = 3
cell.layer.backgroundColor = UIColor.clear.cgColor
return cell
} else {
let cell = tableView.dequeueReusableCell(withIdentifier: "joinCell", for: indexPath) as! JoinTableViewCell
let index = indexPath.row - comments.count
cell.joiner = joinerArray[index]
return cell
}
}
答案 0 :(得分:1)
对评论和房间入口使用单个数组。并使用具有不同标识符的不同单元格。并且在tableview的cellforrow数据源方法中检查数据类型并使用相应的cellidentifier来获取适当的单元格。