簡體   English   中英

Swift - TableView 斷言錯誤:cellForRowAtIndexPath 因為:canEditRowAt()

[英]Swift - TableView Assert Error: cellForRowAtIndexPath Because of: canEditRowAt()

使用以下代碼:

override func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
    switch viewControllerCanEdit {
    case .viewControllerThatCanNotEdit:
        return false
    default:
        tableView.cellForRow(at: indexPath)?.reuseIdentifier == "CellThatAllowsEditing" else { return false }
        return true
    }
}

我收到以下斷言錯誤:

[Assert] 嘗試在表格視圖上調用 -cellForRowAtIndexPath: 在更新其可見單元格的過程中,這是不允許的。 在 UITableViewAlertForCellForRowAtIndexPathAccessDuringUpdate 處創建一個符號斷點,以在調試器中捕獲它並查看導致這種情況發生的原因。 也許您正在嘗試從表視圖回調中向表視圖詢問特定行的單元格? 表視圖:<UITableView:0x7fd48303ec00; 幀 = (0 0; 414 896); clipsToBounds = YES; 自動調整大小 = W+H; 手勢識別器 = <NSArray: 0x60000284e070>; 層 = <CALayer: 0x60000264f340>; 內容偏移量:{0,-100}; 內容大小:{414, 2765.3333333333335}; 調整內容插入:{100, 0, 83, 0}; 數據源:<TableViewController:0x7fd48281b000>>

我已經縮小了原因。 據說這個錯誤是 tableView 在更新數據的過程中調用canEditRowAt()的結果。 正因為如此,匹配tableView.cellForRow(at:)的調用還不存在。

我的問題是; 如果 tableView 正在更新,有沒有辦法擺脫該功能? 或者是否有更好的方法來嘗試匹配單元格是否可以根據單元格類型進行編輯?

更好的方法是在數據模型中添加一個屬性

var canEdit = false

維護它並檢查它( dataSourceArray是數據源數組)

override func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
    switch viewControllerCanEdit {
    case .viewControllerThatCanNotEdit:
        return false
    default:
        return dataSourceArray[indexPath.row].canEdit
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM