我有一个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
}
答案 0 :(得分:3)
这是因为细胞被重复使用。在您的UITableViewCell子类实现
中func prepareForReuse() {
self.textLabel.text = "" //Put your label name
}