识别UITableView中的最后一个和第一个单元格

时间:2015-05-10 23:06:16

标签: ios uitableview swift

我有一个简单的表格视图。我希望第一行和最后一行有一个特殊的图片显示一行的开头和结尾。但是,我得到了错误的身份证明。表视图认为中间的单元格是结尾单元格。我相信IOS正在缓存行并在需要时加载它们,因为当我向上和向下滚动时,一些箭头会改变图片(一旦加载就应该是静态的)。另外documentation says here任何想法如何解决这个问题并确定最后一行和第一行而不管缓存? (顺便说一下位置是用于加载单元格的箭头,数组的第一个和最后一个位置是特殊图片的位置)。

table view image

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
}

1 个答案:

答案 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
}