2016-04-27 73 views
0

我有一個問題,我創建了一個簡單的mvp爲你們展示。在滾動上重複UIFont和UIColor UITableView

當我在表格上滾動時,其他索引獲取顏色和字體。

例:

import UIKit 

class ViewController: UIViewController,UITableViewDataSource,UITableViewDelegate{ 
    var texto: [String] = [] 

    @IBOutlet weak var tableView: UITableView! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     tableView.delegate = self 
     tableView.dataSource = self 
     tableView.rowHeight = UITableViewAutomaticDimension 
     tableView.estimatedRowHeight = 44.0 

     texto.append("Title 1") 
     texto.append("Content 1") 
     texto.append("Read More 1") 

     texto.append("Title 2") 
     texto.append("Content 2") 
     texto.append("Read More 2") 

     texto.append("Title 3") 
     texto.append("Content 3") 
     texto.append("Read More 3") 

     texto.append("Title 4") 
     texto.append("Content 4") 
     texto.append("Read More 4") 

     texto.append("Title 5") 
     texto.append("Content 5") 
     texto.append("Read More 5") 

     texto.append("Title 6") 
     texto.append("Content 6") 
     texto.append("Read More 6") 

     texto.append("Title 7") 
     texto.append("Content 7") 
     texto.append("Read More 7") 

     self.tableView!.reloadData() 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 

    } 

    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     return self.texto.count 
    } 

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
     let cell = tableView.dequeueReusableCellWithIdentifier("cell2")! as UITableViewCell 

     if [0,3].contains(indexPath.row){ 
      cell.textLabel?.font = UIFont(name: "Helvetica", size: 28) 
     } 
     if [2,5].contains(indexPath.row){ 
      cell.textLabel?.textColor = UIColor(hue: 0.575, saturation: 1, brightness: 0.89, alpha: 1.0) 

     } 
     cell.textLabel?.text = self.texto[indexPath.row] 
     return cell 
    } 


} 

cellForRowAtIndexPath我寫的,如果texto的指數爲0或3他們得到字體變了,但是當我使用滾動其他index`s得到相同的字體了。

正確的方法!

enter image description here

錯誤的方式!

enter image description here

回答

2

單元格被重用。當您爲單個條件設置單元格的屬性時,您需要將其重置爲其他條件。更新你的代碼是這樣的:

if [0,3].contains(indexPath.row){ 
     cell.textLabel?.font = UIFont(name: "Helvetica", size: 28) 
    } else { 
     cell.textLabel?.font = // Some default font 
    } 
    if [2,5].contains(indexPath.row){ 
     cell.textLabel?.textColor = UIColor(hue: 0.575, saturation: 1, brightness: 0.89, alpha: 1.0) 
    } else { 
     cell.textLabel?.textColor = // some default color 
    } 
+0

我不知道默認字體是怎麼樣的,有一些方法可以知道嗎? –

+0

使用'UIFont systemFontOfSize'。試驗大小。也許16或17? – rmaddy

+0

問題解決了,謝謝@rmaddy! –

1

UITableViewCell小號得到重用,所以你將需要:

A - 復位.font.textColor爲默認值,你出列的單元格後

B - 將else塊添加到每個if語句,該語句將.font.textColor重置爲默認值val ue