如何获取表视图中可见行的内容后面的键?

时间:2019-06-06 13:28:06

标签: ios swift firebase

我想做的是:

我的tableview从firebase数据库中获取一个帖子,当其他用户看到该帖子时,我想获取他们当前正在查看的帖子的密钥。我想将此密钥存储为可以在其他地方使用的字符串。

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "post")
    let imageView = cell?.viewWithTag(1) as! UIImageView
    imageView.sd_setImage(with: URL(string: posts[indexPath.row].postUrl), placeholderImage: UIImage(imageLiteralResourceName: "SymboleBLANC3x-1.jpg"))
    return cell!
}

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return posts.count
}

override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    return tableView.frame.size.height
}

override func viewDidLoad() {
    super.viewDidLoad()
    loadPosts()
}

var posts = [Post]()
func loadPosts() {
    Database.database().reference().child("posts").observe(.childAdded) { (snapshot: DataSnapshot) in
        if let dict = snapshot.value as? [String: Any]{
            let url = dict["postUrl"] as? String
            let rank = dict["rank"] as? Int
            let post = Post(urlString: url!, rankNumber: rank ?? 0)
            self.posts.append(post)
            self.tableView.reloadData()

        }
 }

1 个答案:

答案 0 :(得分:0)

您可以从下面的代码中获取最后的可见索引,并在此基础上从主数组中获取内容。

let visibleArray = tableView.indexPathsForVisibleRows
let indexPath = visibleArray?.value(forKeyPath: "@max.self") as? IndexPath