我有一個TableView來顯示一堆電影。movies
是Movie對象的數組。 movieIDs
是電影ID的數組。 Ids只是字符串。Swift 3 UITableViewCell indexPath.row搞砸了
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "movieCell", for: indexPath) as! MovieCell
// editing the cell here.
cell.movieNameLabel.text = movies[indexPath.row].movieName
cell.movieYearLabel.text = movies[indexPath.row].year
// source of all hell here.
for id in movieIDs {
if id == movies[indexPath.row].movieID {
print(id + " is equal to " + movies[indexPath.row].movieID)
cell.myButton.setImage(/*there is an image here*/), for: .normal)
}
}
的在cellForRowAt方法循環:
for id in movieIDs {
if id == movies[indexPath.row].movieID {
print(id + " is equal to " + movies[indexPath.row].movieID)
cell.myButton.setImage(//there is an image here), for: .normal)
}
}
我在小區,這是movies[indexPath.row].movieID
在movieIDs
所有的ID比較影片的ID。如果它返回true,我替換單元格內的按鈕的圖像。當我在if語句內部打印時,它實際上不會執行,但它仍然替換隨機單元格中的按鈕圖像。如果我上下滾動速度太快,幾乎所有單元格中的按鈕圖像都會被替換,當它僅用於更改id匹配的單元格時。