使用分区页脚视图向页脚视图所在的部分添加一行?

时间:2019-04-29 07:37:31

标签: ios swift uitableview

我想知道是否可以创建一个UITableView,当用户点击一个节的页脚视图(假设包含一个UIButton)时,可以在该节中添加一行点击部分的页脚视图为。

在尝试创建这样的UITableView时,我意识到这是一个重大挑战,我无法获得对所引用的节脚视图所在节的引用。因此,我无法使用insertRows(at:with:)之类的方法进行所需的添加。

有什么方法可以获取对行的引用?还是有其他方法可以解决,例如,在点击节脚视图时,UITableView“知道”插入行的位置?

1 个答案:

答案 0 :(得分:1)

有几种方法可以执行此操作,但是最简单的方法可能是在页脚视图中添加手势识别器-您不需要按钮,可以在任何地方检查单击,但是您的设计可能更好根据您在页脚视图中包含的内容使用按钮。

您可以使用tag属性来跟踪该部分,并且处理起来很容易。

这是一个简单的示例,我假设在这两节中分别介绍了data1data2

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "tableViewCell", for: indexPath) as UITableViewCell

    if indexPath.section == 0
    {
        cell.textLabel?.text = data1[indexPath.row]
    }
    else
    {
        cell.textLabel?.text = data2[indexPath.row]
    }
    return cell
}

func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
    let footerView = UIView(frame: CGRect(x: 0, y: 0, width: tableView.frame.size.width, height: 30))
    footerView.backgroundColor = UIColor.blue
    footerView.tag = section

    let clickGesture = UITapGestureRecognizer(target: self, action:  #selector(self.didClickFooter))
    footerView.addGestureRecognizer(clickGesture)


    return footerView
}
@objc func didClickFooter(sender : UITapGestureRecognizer) {
    // Do what you want here, once you identify the section

    if sender.view!.tag == 0
    {
        data1.append("new data1")
    }
    else
    {
        data2.append("new data2")
    }
    tableView.reloadData()

}