我的表視圖具有按某些類型排序的一些元素:TypeA,TypeB和TypeC。根據按下哪個單元更改UITableViewCell選擇顏色
我希望當我用TypeA單擊單元格將選擇顏色更改爲紅色時,當我在TypeB上鍵入以將顏色更改爲藍色並在TypeC上按下時將顏色更改爲黃色。
現在我想出了這個代碼:
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
tableView.deselectRowAtIndexPath(indexPath, animated: true)
}
func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
guard let mode = dataSource.selectedObject else {
fatalError("willDisplayCell, but no selected row?")
}
let type = ModeType(rawValue: mode.type)!
let selectionColor = UIView() as UIView
selectionColor.backgroundColor = type.color()
cell.selectedBackgroundView = selectionColor
}
我這個問題是willDisplayCell
是當我開始我的應用程序,並打電話給我的數據源是空的,所以我得到一個致命的錯誤。
我該如何克服這個問題?也許只有在調用didSelectRowAtIndexPath
時才使用標誌來做到這一點。
或者還有另一種方法來實現我所追求的?
或者你可以把你改變顏色的邏輯時didSelectRowAtIndexPath方法實際上是選定的單元格即 –