单击时在 UITableView 中插入行

Inserting rows in UITableView upon click

单击 UIButton 后,我无法向 UITableView 添加行。

我有两个自定义单元格 xibs - 一个包含 UILabel,另一个包含 UIButton

table 单元格的数据是从两个词典(answersmainlinesmain)加载的。

这里是 UITableView 主要函数的代码:

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return self.linesmain["Audi"]!.count + 1
}


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

    if(indexPath.row < 3){
        var cell:TblCell = self.tableView.dequeueReusableCellWithIdentifier("cell") as! TblCell

        cell.lblCarName.text = linesmain["Audi"]![indexPath.row]

        return cell

    } else  {
      var celle:vwAnswers = self.tableView.dequeueReusableCellWithIdentifier("cell2") as! vwAnswers
        celle.Answer.setTitle(answersmain["Good car"]![0], forState:UIControlState.Normal)

                return celle
    }}

我在这里放什么?

@IBAction func option1(sender: UIButton) {

// I need to add rows to the uitableview from two dictionaries into two different xibs 

}

您需要修改 linesmainanswersmain,向它们添加数据,然后调用 [self.tableView reloadData]

如果您提取 linesmain["Audi"]answersmain["Good car"] 并将它们保存到不同的可变数组中并修改它们会更好。

您需要在 func option1 中执行此操作。

你应该看看文档 here

有一个名为 insertRowsAtIndexPaths:withRowAnimation:UITableView 方法,它在指定的 indexPath 处插入行。

您可以执行下一步:

var showingAll = false

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return showingAll ? self.linesmain["Audi"]!.count + 1 : 0
}

@IBAction func option1(sender: UIButton) {
    showingAll = true

    tableView.beginUpdates()

    let insertedIndexPathRange = 0..<self.linesmain["Audi"]!.count + 1
    var insertedIndexPaths = insertedIndexPathRange.map { NSIndexPath(forRow: [=10=], inSection: 0) }
    tableView.insertRowsAtIndexPaths(insertedIndexPaths, withRowAnimation: .Fade)

    tableView.endUpdates()
}