2016-01-13 49 views
0

我正在構建一個具有Post對象(如FB帖子)的iOS應用程序,並且每個對象都以UITableViewCell顯示。我正在嘗試使用UITableViewController中內置的tableView(commitEditingStyle)方法來實現刪除該帖子的功能。iOS Swift 1.2:除了indexPath.row以外,如何設置每個單元格的唯一標識符

暫時我一直在使用indexPath.row作爲刪除帖子的關鍵,但顯然這從長遠來看是行不通的。

有沒有辦法爲每個單獨的單元格設置某種唯一標識符,理想情況下是一個等於它包含的Post索引的整數?

基本上我試圖創建一個一對一的關係,每個UITableViewCell及其包含Post

回答

2

你也可以繼承UITableViewCell,並添加postId屬性來存儲相關帖子的ID:

class PostTableViewCell: UITableViewCell { 
    var postId: NSString? = nil 

    func configure(post: Post) { 
     postID = post.id 
     // configure the labels, etc in the cell 
    } 
} 

,然後更新返回此單元格:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let cell = (tableView.dequeueReusableCellWithIdentifier("PostTableViewCell") as? PostTableViewCell) ?? PostTableViewCell(style: .Default, reuseIdentifier: "PostTableViewCell") 
    // assuming your posts are available in an array on your controller 
    cell.configure(posts[indexPath.row]) 
    return cell 

當一個動作以對一個單元格(選擇,刪除等),你可以簡單地得到它的相關帖子ID並在相應的帖子上用id執行所需的動作。

這也具有通過移開單元配置邏輯來降低控制器的複雜性的優點。

+0

這應該是最理想的方法。 – Akaino

相關問題