无法在UITableView中选择正确的第一行

时间:2015-04-09 10:29:09

标签: ios uitableview swift

我有一个包含6行的表格行。我希望第一行的背景颜色不同,但第4行(索引3)的背景颜色也会改变。我正在添加相同的屏幕截图,这里是代码

import UIKit
var items = ["admksalmdlsamdlsamdlkasmdlasmdlsamdlksamdlkasmdlkasmdlksamdklasmdlkasmdlkasmdlkasmdcjkndscnksndcdkcnksdjcnksdnckjsdncsdnjkanckjanckjsnckjasncjkasnckjasncjkasnckdslnjcvlkjdncjsnjkasncjkasncjkasnckjasncjkasnckjsanckjsanckjasncjksancjksancjksancjkasncjasncjkasncklas;NKCNDJKVALNVJKSDANCKSCNJSNCJKSDCNKJSDNCKJANCDKNLSACNJDKCNJKNCAKJNACJKNKJANCKJSNC","badmksalmdlsamdlsamdlkasmdlasmdlsamdlksamdlkasmdlkasmdlksamdklasmdlkasmdlkasmdlkasmdcjkndscnksndcdkcnksdjcnksdnckjsdncsdnjkanckjanckjsnckjasncjkasnckjasncjkasnckdslnjcvlkjdncjsnjkasncjkasncjkasnckjasncjkasnckjsanckjsanckjasncjksancjksancjksancjkasncjasncjkasncklas;NKCNDJKVALNVJKSDANCKSCNJSNCJKSDCNKJSDNCKJANCDKNLSACNJDKCNJKNCAKJNACJKNKJANCKJSNC", "cadmksalmdlsamdlsamdlkasmdlasmdlsamdlksamdlkasmdlkasmdlksamdklasmdlkasmdlkasmdlkasmdcjkndscnksndcdkcnksdjcnksdnckjsdncsdnjkanckjanckjsnckjasncjkasnckjasncjkasnckdslnjcvlkjdncjsnjkasncjkasncjkasnckjasncjkasnckjsanckjsanckjasncjksancjksancjksancjkasncjasncjkasncklas;NKCNDJKVALNVJKSDANCKSCNJSNCJKSDCNKJSDNCKJANCDKNLSACNJDKCNJKNCAKJNACJKNKJANCKJSNCSDNSAJKDNAKLSMDLAKSDMKLASMDLKASMDLKASMDLKASMDLKASMDLKASMDLKASMDLKASMDLKASMDLKASMLAKSMDLASMDLAKSMDLKASMDLKASMDLKASMLKADSMLKASMDLKASMDLKMadmksalmdlsamdlsamdlkasmdlasmdlsamdlksamdlkasmdlkasmdlksamdklasmdlkasmdlkasmdlkasmdcjkndscnksndcdkcnksdjcnksdnckjsdncsdnjkanckjanckjsnckjasncjkasnckjasncjkasnckdslnjcvlkjdncjsnjkasncjkasncjkasnckjasncjkasnckjsanckjsanckjasncjksancjksancjksancjkasncjasncjkasncklas;NKCNDJKVALNVJKSDANCKSCNJSNCJKSDCNKJSDNCKJANCDKNLSACNJDKCNJKNCAKJNACJKNKJANCKJSNCishan","cool1","hsjndjksndjkasnd","nsjdnknkjandjknasdka"]
class ViewController: UIViewController,UITableViewDelegate {
let basicCellIdentifier = "BasicCell"
@IBOutlet weak var tableView: UITableView!
func configureTableView() {

    tableView.rowHeight = UITableViewAutomaticDimension
    tableView.estimatedRowHeight = 160.0

}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCellWithIdentifier(basicCellIdentifier) as BasicCell
    if ( indexPath.row == 0){
    cell.userInteractionEnabled = false
        cell.backgroundColor = UIColor.grayColor()
    }
    println(indexPath.row)
    cell.titleLabel.text = items[indexPath.row]
    return cell
    }



   func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return items.count
}
override func viewDidLoad() {
    super.viewDidLoad()
    println(items.count)
    //tableView.reloadData()
    // Do any additional setup after loading the view, typically from a nib.
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

}

4th row's background changing

1 个答案:

答案 0 :(得分:2)

当您通过dequeueReusableCell重复使用标识符为 -

的单元格时
let cell = tableView.dequeueReusableCellWithIdentifier(basicCellIdentifier) as BasicCell

根据您的要求,您将索引路径0到灰色的单元格的背景颜色设为

if ( indexPath.row == 0)
   cell.backgroundColor = UIColor.grayColor() 

当这个单元格被重用于第4行(索引path.row = 3)时,它已经具有先前为第0行设置的背景颜色(为灰色),这就是为什么所有重用的单元格正在重复使用第0个索引的单元格将以灰色显示。

要解决此问题,只需将上述if语句的else case添加为

if ( indexPath.row == 0)
   cell.backgroundColor = UIColor.grayColor() 
else
   cell.backgroundColor = UIColor.whiteColor()