我有一個UITableView
與屏幕上方的各種按鈕,每個按鈕關聯到一個單獨的UITableViewDataSource
。每次單擊其中一個按鈕時,表視圖的數據源都會更新,並且tableView會獲取.reloadData
方法,該方法會更新tableView
中的所有數據。uitableview數據源以錯誤的順序重新加載swift
我在單元格中也有一個標籤,它反映了indexPath.row()
,意思是每行有1,2,3等等的行數與表中的行數相同。
但是,我的問題是當表重新加載時,索引是亂序的。有時它從3,1,2,4等開始,有時候是1,2,3,4,0,0,0,0等。
tableView的單元格中還有一個圖像,它只有出現在前8行左右。
這是我的func
更改dataSource
。請注意,所有dataSource
都在ViewController中實例化。所有數據源都是成對的,陸地/海洋,並且以嵌套陣列的形式組合在一起,每個插入陣列保存兩個數據源,因此輸入一個陣列。 (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
}
當單元格被重用時,你清除了這個標籤嗎?重用的單元格可以出現在表格視圖的不同位置。 – rdelmar 2015-03-13 06:21:22
清除標籤?像設置爲零? – Brie 2015-03-13 06:29:59
你可以添加你的'cellForRowAtIndexPath'方法嗎? – 2015-03-13 06:44:13