我有一個tableView和我的tableViewCell有一個isLiked
變量和一個likeButton
。我想將我的likeButton's
tintColor設置爲isLiked
的狀態。我這樣做的方式是從Firebase中檢索用戶喜歡的帖子列表,然後將其傳遞到tableView中。如果postID符合列表,我想將isLiked變量設置爲true。Swift:設置TableViewCell的變量
但是,儘管在cellForRow中設置了這個邏輯,tableViewCell中的isLiked變量也沒有相應地設置。我怎樣才能相應地設置它?我的代碼如下:
// in TableViewController
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "TableViewCell", for: indexPath) as! TableViewCell
let post: FIRDataSnapshot = self.posts[indexPath.row]
let postValues = post.value as! [String: AnyObject]
let postID = postValues["postID"] as! String
for likedPosts in usersLikedPostsList {
if likedPosts == postID {
DispatchQueue.main.async {
cell.isLiked = true
}
} else {
cell.isLiked = false
}
}
return cell
}
// in TableViewCell
class TableViewCell: UITableViewCell {
var isLiked: Bool?
@IBOutlet weak var likeButton: UIButton!
override func awakeFromNib() {
super.awakeFromNib()
print(isLiked)
if let _ = isLiked {
likeButton.tintColor = .red
} else {
likeButton.tintColor = .darkGray
}
}
}
從打印語句,isLiked
變量是零加載表時。我試圖用self.tableView.reloadData()
,但它也沒有相應地設置它。
請注意,我想操縱TableViewCell中的isLiked
狀態,因爲我想添加代碼以在TableViewCell中切換其狀態,以便用戶可以喜歡和不同於帖子,並相應地對Firebase執行更新。
簡單而優雅,謝謝! – Koh