我想知道是否可以创建一个UITableView
,当用户点击一个节的页脚视图(假设包含一个UIButton
)时,可以在该节中添加一行点击部分的页脚视图为。
在尝试创建这样的UITableView
时,我意识到这是一个重大挑战,我无法获得对所引用的节脚视图所在节的引用。因此,我无法使用insertRows(at:with:)
之类的方法进行所需的添加。
有什么方法可以获取对行的引用?还是有其他方法可以解决,例如,在点击节脚视图时,UITableView
“知道”插入行的位置?
答案 0 :(得分:1)
有几种方法可以执行此操作,但是最简单的方法可能是在页脚视图中添加手势识别器-您不需要按钮,可以在任何地方检查单击,但是您的设计可能更好根据您在页脚视图中包含的内容使用按钮。
您可以使用tag
属性来跟踪该部分,并且处理起来很容易。
这是一个简单的示例,我假设在这两节中分别介绍了data1
和data2
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()
}