2017-09-25 159 views
0

我提出的擴大tableViewCell和我的變量而言的默認值。如果該值爲然後細胞收縮,當其真正然後細胞擴大。問題是,當一個細胞的值我希望所有其他細胞值爲,我很努力。這裏是我下面的代碼:取消選擇的行取決於值時的UITableView選擇其他行夫特

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 

    let content = datasource[indexPath.row] 

    //Here content.expand = false by default in other class 

    if indexPath.row == 0 { 
     print("0 row") 
     content.expanded = !content.expanded 

    } else if indexPath.row == 1 { 
     print("1 row") 
     content.expanded = !content.expanded 

    } else if indexPath.row == 2 { 
     print("2 row") 
     content.expanded = !content.expanded 
    } 

    tableView.reloadRows(at: [indexPath], with: .automatic) 

} 

以下情形的圖片: enter image description here

我不想要兩個細胞在同一時間進行擴展。請幫忙。

回答

2

首先聲明這個變量

var selectedIndex: IndexPath? 

接下來,這裏就是你的選擇代碼:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 


    if(selectedIndex != indexPath){ // It's not the expanded cell 

     var indicesArray = [IndexPath]() 

     if(selectedIndex != nil){ //User already expanded other previous cell 

      let prevExpandedContent = datasource[(selectedIndex?.row)!] 

      prevExpandedContent.expanded = !prevExpandedContent.expanded 

      indicesArray.append(selectedIndex!) 

     } 

     // Assign new expanded cell 

     selectedIndex = indexPath 


     let currentExpandedContent = datasource[indexPath.row] 

     currentExpandedContent.expanded = !currentExpandedContent.expanded 


     indicesArray.append(indexPath) 

     tableView.reloadRows(at: indicesArray , with: .automatic) 



    } 



} 

希望這將簡化您的要求。