如何在didselectRowAt(Swift 3)中添加子行

时间:2017-03-15 16:54:19

标签: ios uitableview swift3 expand

我想在索引路径的行中添加一个子行,而不使用库。

当我选择一个单元格时,另一个单元格出现在该单元格下方,对每个单元格重复此操作 Ps:它出现的细胞是相同的

我试试这个:

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行

2 个答案:

答案 0 :(得分:0)

而不是向您的array.count添加1

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

向此数组添加另外一个对象,因为如果没有,您将收到一条错误消息,指出您正在尝试获取比数据源数组更多的行。

所以:

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()
}

应该有用。

答案 1 :(得分:0)

嗨,你正在做的只是在arrayEnum中插入新元素然后

tableView.beginUpdates()  tableView.insertRows(at:[IndexPath(row:CurrentIndex,section:0)],带:.automatic)  tableView.endUpdates()

这里的CurrentIndex在你要在数组中插入一个元素的元素的索引中,它将自动反映在tableview中