2017-03-15 109 views
0

我想在一行與自定義單元格指數路徑添加一個副行不使用圖書館。我怎樣才能添加子行時didselectRowAt(SWIFT 3)

當我選擇的細胞,另一小區出現該單元下面,重複用於每個小區 詩此操作:

func numberOfSections(in tableView: UITableView) -> Int { 
     return 1 

    } 

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {    
     return arrayEnum.count 
    } 
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
     var CellTB: UITableViewCell! 

      let cell = tableView.dequeueReusableCell(withIdentifier: "enumCell", for: indexPath)as! UserFlagTableViewCell 
      cell.UserflagLabel.text = arrayEnum[indexPath.row].rawValue 
      CellTB = cell 


//   let cell1 = tableView.dequeueReusableCell(withIdentifier: "freeTextCell", for: indexPath)as! FreeTextTableViewCell 
//   cell1.sendButton.addTarget(self, action: Selector("sendUserflagEvent:"), for: .touchUpInside) 
//   CellTB = cell1 


       return CellTB 

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


     self.tableView.insertRows(at: [IndexPath(row: UserFlagType.userFlagTypes.count-1, section: 0)], with: .automatic) 



     self.tableView.beginUpdates() 
     self.tableView.endUpdates() 


    } 
:其中它會出現這是相同的

我嘗試這種細胞

我有1節 我有6行

回答

0

而不是增加1到你的array.count的

self.tableView.insertRows(at: [IndexPath(row: array.count+1, section: 0)], with: .automatic) 

添加1個更多的對象數組,因爲如果不是,你會得到一個錯誤,說你想獲得比你的數據源陣列多行。

所以:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
//Add a row here to your array 
self.tableView.insertRows(at: [IndexPath(row: array.count - 1, section: 0)], with: .automatic) 
self.tableView.beginUpdates() 
self.tableView.endUpdates() 
} 

應該工作。

+0

不,這不是爲我工作,我怎麼能顯示新的細胞? 原因:「試圖插入一行6成部分0,但更新後只有6個在第0行」 的libC++ abi.dylib:與類型的未捕獲的異常NSException –

+0

IndexPath從0開始,而你是終止做array.count,從1開始。所以...你必須做array.count - 1.我將編輯答案,Sry – Mellao

+0

我有一個枚舉的列表(6枚)我把它放在表視圖和我想要當我選擇一個單元格出現一個新的自定義單元格(我有一個按鈕和文本發送)。我不知道它是如何做到的。和我不能添加到可能枚舉數組 –

0

嗨,你在做正確的只需要插入新的元素在arrayEnum然後

tableView.beginUpdates() tableView.insertRows(在:IndexPath(行:CURRENTINDEX,部分:0)],其中: 。自動) tableView.endUpdates()

在要插入在數組中的元素的元素的索引這裏CURRENTINDEX,它會自動在tableview中反映