我有一個UITableViewController
坐在一個Container
內,坐落在另一個UIViewController
內。我把它製作成一個故事板。 Here is a snap.有問題的UITableViewController
位於右側,稱爲LayerTableViewController
。爲什麼在單元格不可見時調用cellForRowAtIndexPath?
出於某種原因,此UITableView的cellForRowAtIndexPath
方法正在爲當前不可見的單元調用。我通過將方法更改爲以下方法來測試此方法:
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("layerCell", forIndexPath: indexPath) as! LayerTableViewCell
// Configure the cell...
cell.layerCircleView.layer.cornerRadius = cell.layerCircleView.layer.bounds.width/2
let label = UILabel(frame: CGRect(x: cell.layerCircleView.frame.midX - 10, y: cell.layerCircleView.frame.midY - 10, width: 20, height: 20))
label.text = String(indexPath.row)
cell.layerCircleView.addSubview(label)
print("indexPath.row: \(indexPath.row)")
return cell
}
此代碼產生了以下奇怪的結果。在控制檯中,數字偶爾會被打亂。不在可見屏幕附近的單元將它們的indexPath.row
傳遞給此方法。此外,我正在製作的UILabels
都是相互重疊的。 Here is a combined image of the simulator and terminal output. 正如你所看到的,有一條隨機線表示indexPath.row: 0
,當indexPath.row
s坐在二十幾歲左右時。
所以總結一下,爲什麼有一個cellForRowAtIndexPath
的調用,indexPath.row
目前不可見,爲什麼這些數字會互相渲染?