我有一个简单的表格视图。我希望第一行和最后一行有一个特殊的图片显示一行的开头和结尾。但是,我得到了错误的身份证明。表视图认为中间的单元格是结尾单元格。我相信IOS正在缓存行并在需要时加载它们,因为当我向上和向下滚动时,一些箭头会改变图片(一旦加载就应该是静态的)。另外documentation says here任何想法如何解决这个问题并确定最后一行和第一行而不管缓存? (顺便说一下位置是用于加载单元格的箭头,数组的第一个和最后一个位置是特殊图片的位置)。
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
{
var stop = locations[indexPath.row]
var cell = tableView.dequeueReusableCellWithIdentifier("Cell") as! CustomRouteViewCell
cell.locationTitle.text = "\(stop)"
cell.downTime.text = BusRoute.getRecentDepartures(stop, direction: direction, name: name)
println(indexPath.row)
cell.indexRow = indexPath.row
if(cell.indexRow == 0)
{
cell.downImage.image = UIImage(named: "beginningRoute.png")
}
else if(cell.indexRow == locations.count - 1)
{
cell.downImage.image = UIImage(named: "endRoute.png")
}
return cell
}
答案 0 :(得分:3)
问题可能不是你错误地识别第一个和最后一个单元格(只要你的UITableView
中只有一个部分,这看起来很好)。问题可能是重复使用单元格:您没有将单元格的downImage.image
设置为nil
,而单元格可能以前是第一个或最后一个单元格。
尝试以下方法:
switch indexPath.row {
case 0:
cell.downImage.image = UIImage(named: "beginningRoute.png")
case self.tableView(tableView, numberOfRowsInSection: 0) - 1:
cell.downImage.image = UIImage(named: "endRoute.png")
default:
cell.downImage.image = nil
}