2015-04-09 3 views
-1

У меня есть таблица строк с 6 строками. Я хочу, чтобы цвет фона первой строки отличался, но цвет фона 4-й строки (индекс 3) также изменяется. Я добавляю скриншот того же и здесь кодНевозможно выбрать правильную первую строку в UITableView

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

+0

Удалить cell.userInteractionEnabled = ложь из вашего кода. – Ajumal

+0

Пробовал, не работает. Как это имеет значение? Я хочу некоторые свойства только для первой строки, но это происходит и для четвертой строки –

ответ

2

Как вы повторно ваши клетки через dequeueReusableCell с идентификатором как-

let cell = tableView.dequeueReusableCellWithIdentifier(basicCellIdentifier) as BasicCell 

в соответствии к вашим требованиям у вас есть цвет фона ячейки для индексного пути 0 до серого цвета как

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

Когда эта ячейка повторно используется для 4-й строки (index path.row = 3), то у нее уже установлен цвет фона для строки 0 (до серого цвета), поэтому все повторно используемые ячейки, которые являются повторное использование ячейки 0-го индекса будет показано серым цветом.

Чтобы устранить эту проблему, просто добавьте еще случай с вышеизложенным, если заявление, как

if (indexPath.row == 0) 
    cell.backgroundColor = UIColor.grayColor() 
else 
    cell.backgroundColor = UIColor.whiteColor() 
Смежные вопросы