2016-12-12 283 views
0

我有一個有趣的問題。因爲我是Swift新手。在自定義單元格內添加自定義單元格

我已在TableView上創建並使用Storyboard添加了CUSTOM CELL。現在我想添加一個自定義單元格當第一自定義單元格 UIButton的點擊。

第二個自定義電池是使用XIB創建。現在當我註冊第二個單元格didload然後我看到空白tableview作爲第二個自定義單元格是空白。

我已經使用以下代碼:

在索引登記第二小區

self.tableView.registerNib(UINib(nibName: "customCell", bundle: nil), forCellReuseIdentifier: "customCell") 

和細胞用於行

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{ 

     let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! Cell 

     cell.nameLbl.text = "Hello hello Hello" 

     let Customcell = tableView.dequeueReusableCellWithIdentifier("customCell", forIndexPath: indexPath) as! customCell 


     if self.Selected == "YES" { 
      if self.selectedValue == indexPath.row { 


       return Customcell 
      } 

      return cell 

     } 
     else{ 

      return cell 
     } 
    } 

這裏Cell對象爲故事板細胞和Customcell爲XIB第二個定製單元。

請建議我該怎麼做。

回答

1

首先確保你的ViewController是的tableView的的UITableViewDelegate和UITableViewDataSource,並且您有對的tableView

下一個出口,你需要註冊在viewDidLoad方法自定義單元格:

override func viewDidLoad() { 
    super.viewDidLoad() 
    tableView.register(UINib(nibName: "CustomCell", bundle: nil), forCellReuseIdentifier: "customCell") 
} 

如果要在按下時想要修改多個單元格,最簡單的方法是保存已選擇的單元格陣列。這可以是視圖控制器內的變量:

var customCellIndexPaths: [IndexPath] = [] 

當小區被選擇則可以簡單地將其添加到自定義單元格IndexPaths陣列(如果它尚未自定義單元格),然後重新加載單元:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
    if customCellIndexPaths.contains(indexPath) == false { 
     customCellIndexPaths.append(indexPath) 
     tableView.reloadRows(at: [indexPath], with: .automatic) 
    } 
} 

在cellForRowAt方法,我們必須檢查電池是否已被選中,如果是的話返回自定義單元格,否則返回正常細胞:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 

    if customCellIndexPaths.contains(indexPath) { 
     return tableView.dequeueReusableCell(withIdentifier: "customCell")! 
    } 

    let cell = UITableViewCell(style: .default, reuseIdentifier: "normalCell") 
    cell.textLabel?.text = "Regular Cell" 
    return cell 
} 

有你有它。現在,您應該在選擇時接收到正常細胞成爲CustomCell的平滑動畫。