2017-08-10 55 views
1

我有TableView,用戶可以在其中單擊並展開每個單元格(UI:click)。這是該代碼(我也創建.xib文件佈局該小區):TableView中的擴展和可滑動單元格

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, UISearchResultsUpdating { 
var selectedIndex: IndexPath? 
    var isExpended = false 

    func didExpandCell() { 
     self.isExpended = !isExpended 
     self.tableView.reloadRows(at: [selectedIndex!], with: .automatic) 

    } 
    @IBOutlet weak var tableView: UITableView! 
... 
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
     let cell = tableView.dequeueReusableCell(withIdentifier: "wordCell", for: indexPath) as! CellController 
     if searchController.isActive { 
      cell.word.text = filtered[indexPath.row].word 
      cell.translation.text = filtered[indexPath.row].translation 
      cell.date.text = filtered[indexPath.row].fullDate 
      cell.exOne.text = filtered[indexPath.row].exOne 
      cell.exTwo.text = filtered[indexPath.row].exTwo 
     } else { 
      cell.word.text = words[indexPath.row].word 
      cell.translation.text = words[indexPath.row].translation 
      cell.date.text = words[indexPath.row].fullDate 
      cell.exOne.text = words[indexPath.row].exOne 
      cell.exTwo.text = words[indexPath.row].exTwo 
     } 
     return cell 
    } 

    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
     self.selectedIndex = indexPath 
     self.didExpandCell() 
    } 

    func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { 
     if isExpended && self.selectedIndex == indexPath { 
      return 180 
     } 
     return 70 
    } 
} 

而且,所有單元滑動展示。這是代碼:

func tableView(_ tableView: UITableView, editActionsForRowAt: IndexPath) -> [UITableViewRowAction]? { 
     let edit = UITableViewRowAction(style: .normal, title: "Edit") { action, index in 
      print("Edit") 
     } 
     edit.backgroundColor = .blue 

     let delete = UITableViewRowAction(style: .normal, title: "Delete") { action, index in 
      print("Delete") 
     } 
     delete.backgroundColor = .red 

     return [delete, edit] 
    } 

    func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool { 
     return true 
    } 

問題:

當我刷卡細胞,它總是在花費半,這是我的UI刷卡後:click。如果我刷過它,可能不會展開Cell嗎?

+0

你可以在didSelectRowAt方法中加入一個調試點,看看你什麼時候刷過,這個mehod叫嗎? – 3stud1ant3

+0

是不是你的擴展函數不正確,func didExpandCell()?說,如果我點擊Cell1,isExpended = true並打開Cell。同樣,如果我點擊Cell2,它會設置isExpended = false,而不是展開Cell2。 –

+0

不,它不會被刷卡 –

回答

0

不好意思,但問題是我沒有爲單元格的擴展版本設置約束。這就是爲什麼這個標籤隨着滑動菜單移動。現在它可以工作。 謝謝你的回覆!

+0

嘿,也許這可能會讓你感興趣https://github.com/umarF/MultiSelectHeaders –