如何循环遍历具有自定义单元格的表视图并从自定义单元格中获取信息?

时间:2017-11-29 17:10:54

标签: ios swift uitableview

嘿伙计们我遇到UITableView的问题。 enter image description here

我正在制作聊天应用程序,但无论出于何种原因,都有重复的单元格。所以我想循环遍历所有可见单元格,并获取时间和名称等属性,以允许我删除任何重复项。但是我得到了错误:

  

来自' UserCell'不相关的类型'数组'总是   失败

如何解决此问题,或者是否有更好的方法来循环使用自定义单元格的表格视图?

我想做的事情:

    func deleteDuplicateTableCells(){
    let cells = self.messagesTableView.visibleCells as! UserCell as! Array<UITableViewCell>

    for cell in cells {
        // get .name and .timestamp from cell

    }


}

以下是UserCell类的重要部分:

class UserCell : UITableViewCell {

var message : Message? {
 didSet{



    if let id = message?.chatPartnerId{

        let ref = Database.database().reference().child("users").child(id()!)
        ref.observe(.value, with: { (snapshot) in

            if let dict = snapshot.value as? [String: AnyObject]
            {
                self.textLabel?.text = dict["username"] as? String

                if let profileImageUrl = dict["pic"] as? String {
                    self.profileImageView.loadImageUsingCacheWithUrlString(urlString: profileImageUrl)
                }
            }



        }, withCancel: nil)

    }

    detailTextLabel?.text = message?.text

    let timeInt = message?.timestamp?.numberValue

    if let seconds = timeInt?.doubleValue{
        let timeStampDate = NSDate(timeIntervalSince1970: seconds)

        let dateformat = DateFormatter()
        dateformat.dateFormat = "hh:mm:ss a"
        timeLabel.text = dateformat.string(from: timeStampDate as Date)


    }

}
}

1 个答案:

答案 0 :(得分:0)

尝试获取可见细胞的方式有点偏离,请尝试以下方法:

guard let cells = tableView.visibleCells as? [UserCell] else { return }

然后做任何你想做的事情

if cells.map {}... // or whatever

我必须同意您对问题的评论,但这不是最佳方法,您应该处理您的DATA,然后使用该数据填充单元格。编辑屏幕上显示的单元格是不好的做法(老实说,可能无法做你想做的事情。)