uitableview数据源以错误的顺序重新加载swift

时间:2015-03-13 06:09:31

标签: ios iphone uitableview swift

我有一个UITableView,屏幕顶部有各种按钮,每个按钮与一个单独的UITableViewDataSource相关联。每次单击其中一个按钮时,表视图的数据源都会更新,tableView会获得.reloadData方法,该方法会更新tableView中的所有数据。

我在单元格中也有一个反映indexPath.row()的标签,这意味着每行有1,2,3等等,与表中的行数相同。

但是,我的问题是当重新加载表时,索引出现故障。有时它从3,1,2,4等开始。有时它是1,2,3,4,0,0,0,0等。

tableView的Cell中还有一个图像,它只显示在前8行左右。

我的func用于更改dataSource。请注意,所有dataSource都在ViewController中实例化。所有dataSource都成对,陆地/海洋,并在一个嵌套数组中组合在一起,每个inset数组包含两个dataSource,因此输入[DataSource数组。 (DataSource也是继承自UITableViewDataSource

的自定义对象
func changeDataSource(ds: [DataSource]) -> DataSource {
        var idx = landOrSeaSegments.selectedSegmentIndex
        currentDS = ds

        //If Land segment is selected, show 'Land' datasource, else show 'Sea' datasource
        if showLandDS == true {
            idx = 0
            headerImage?.image = ds[idx].headerImage
            println("Y1 Land")
        } else {
            idx = 1
            headerImage?.image = ds[idx].headerImage
            println("Y1 Sea")
        }
        tableView.reloadData()
        return ds[idx]
    }

如果有什么不清楚请说出来。我在问这些问题方面有点缺乏经验!

修改

这是我每个数据库中的cellForRowAtIndexPath。它们的结构都相同,textArray中的值不同,最终与图像数组相同。现在图像是静态的。

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier("YCell") as YCell
    var cellText = cell.dayDesc?.text //dayDesc is a custom label as an outlet in my YCell class.

    cell.dayNumberLabel?.text = "\(indexPath.row + 1)"
    cell.dayIcon?.image = UIImage(named: "icon")

    cellText = textArray[indexPath.row]

    return cell
}

1 个答案:

答案 0 :(得分:3)

这是因为细胞被重复使用。在您的UITableViewCell子类实现

func prepareForReuse() {
  self.textLabel.text = "" //Put your label name
}