2016-03-14 72 views
1

TableViewCell1: UITableViewCell類用下面的代碼:調用awakeFromNib

override func awakeFromNib() { 
     super.awakeFromNib() 

      if (gender[0] == true){ 
       let origImage = UIImage(named: "maleP"); 
       let tintedImage = origImage?.imageWithRenderingMode(UIImageRenderingMode.AlwaysTemplate) 
       genderButton[0].setImage(tintedImage, forState: .Normal) 
       genderButton[0].tintColor = UIColor(hex: "d8006c") 
      } 
      else{ 
       let origImage = UIImage(named: "maleP"); 
       let tintedImage = origImage?.imageWithRenderingMode(UIImageRenderingMode.AlwaysTemplate) 
       genderButton[0].setImage(tintedImage, forState: .Normal) 
       genderButton[0].tintColor = UIColor(hex: "333333") 

     } 
     if (gender[1] == true){ 
      let origImage = UIImage(named: "femaleP"); 
      let tintedImage = origImage?.imageWithRenderingMode(UIImageRenderingMode.AlwaysTemplate) 
      genderButton[1].setImage(tintedImage, forState: .Normal) 
      genderButton[1].tintColor = UIColor(hex: "d8006c") 
     } 
     else{ 
      let origImage = UIImage(named: "femaleP"); 
      let tintedImage = origImage?.imageWithRenderingMode(UIImageRenderingMode.AlwaysTemplate) 
      genderButton[1].setImage(tintedImage, forState: .Normal) 
      genderButton[1].tintColor = UIColor(hex: "333333") 

     } 
    } 

,我就剩視圖控制器,它具有的tableview控制器,問題是,我想清除細胞內的價值,回到之前想要重新加載它..

@IBAction func clearSelection(sender: AnyObject) { 
     staticlink = "" 
     attribute1 = [String]() 
     values1 = [String]() 

     gender = [false,false] 
     seasons = [false,false,false,false] 

     clickedsection = 10 

     cliedkarry = [false,false,false,false,false,false,false,false] 

     tableView.reloadData()  
} 

如何我可以將我的無所作爲應用於tableview單元格或所有的tableview!

我試過tableView.reloadData(),但它沒有工作,我猜是因爲我用這種方式註冊碎粒

tableData = [ 
    ["title": "Gender", "height": "120", "cellID": "cell1"]] 

tableView.registerNib(UINib(nibName: "TableViewCell1", bundle: NSBundle.mainBundle()), forCellReuseIdentifier: "cell1") 

這是我cellForRowAtIndexPath

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let record = tableData[indexPath.section]; 
    let cell: UITableViewCell = tableView.dequeueReusableCellWithIdentifier(record["cellID"] as! String)! 
    cell.hidden = !(CBool(expandSections[indexPath.section] as! NSNumber)) 
    return cell 
} 

所以我怎麼能重新加載tableview單元格內的數據

回答

2

我想清除細胞內的價值,要備份的是像以前一樣重新裝入

好吧,你有機會在prepareForReuse方法。每次單元將被重新循環時,都會調用它。

但是,你的代碼看起來有什麼問題是你正在做一些檢查,顯然需要留在控制器而不是單元的awakeFromNib。只需使用cellForRowAtIndexPath並向單元提供數據並在那裏更新其UI。 awakeFromNib只會被調用一次。

+0

我該怎麼做:( –

+0

ty我做到了;)它的工作 –

+0

很高興你發現它有幫助。這也是很好的閱讀:https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/TableView_iPhone/TableViewCells/TableViewCells.html –

1

是的,你註冊了nibs,因此tableView可以重用導致「awakeFromNib」不總是被調用的單元格。你應該在別處更新UI的東西。你不應該手動調用「awakeFromNib」。 在你tableViewCell

func updateUI() { 
    //do the UI stuff 
} 

在你的控制器

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let record = tableData[indexPath.section]; 
    let cell: UITableViewCell = tableView.dequeueReusableCellWithIdentifier(record["cellID"] as! String)! 
    cell.hidden = !(CBool(expandSections[indexPath.section] as! NSNumber)) 
    if(!cell.hidden) cell.updateUI() 
    return cell 
} 
+0

類型'UITableViewCell'的值有沒有成員'updateUI' –

相關問題