在表格视图单元格中使用按钮出列单元格
Posted
技术标签:
【中文标题】在表格视图单元格中使用按钮出列单元格【英文标题】:Dequeue cell with button in table view cell 【发布时间】:2016-03-31 22:49:56 【问题描述】:基本上,我有一个列出潜在员工的自定义表格视图单元格。此单元格包括几个标签和一个按钮。我想要的是删除单元格的按钮,但我能找到的只有这个:
override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath)
if editingStyle == UITableViewCellEditingStyle.Delete
numbers.removeAtIndex(indexPath.row)
tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Automatic)
这仅允许您在滑动然后选择“删除”时删除单元格
我想我应该在我的 tableViewController.swift 文件中创建一个函数,该函数将删除给定行的单元格,并在我的自定义单元格类中创建一个将调用所述函数的 IBAction。
删除给定行的单元格的函数是什么样的?但是在这种情况下,单元格是否也知道它在哪一行或者是 tableViewController 的工作?
【问题讨论】:
看这个:***.com/questions/8983094/… 【参考方案1】:在您的cellForRowAtIndexPath
中设置cell.button.tag = indexPath.row
为按钮添加目标:cell.button addTarget:...
在按钮方法中,删除您的dataArray
中索引button.tag
处的项目。然后刷新tableViewself.tableView reloadData
【讨论】:
【参考方案2】:您可以使用 UIButton 的 tag 属性来存储要删除的单元格的索引,并在处理程序中使用该 tag 属性来定位正确的单元格。在我的示例代码中,我只是做了一个假设 你只有一个部分,所以它被设置为零。
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
...
...
cell.button.tag = indexPath.row
let tapGesture = UITapGestureRecognizer(target: self, action: Selector("handleDeleteTap:"))
cell.button.addGestureRecognizer(tapGesture)
func handleDeleteTap(sender: UITapGestureRecognizer)
if let button = sender.view as? UIButton
let indexPath = NSIndexPath(forRow: button.tag, inSection: 0)
tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Automatic)
【讨论】:
【参考方案3】:1) 您必须在cellForRowAtIndexPath
中为您的按钮定义一个操作:
...
myButton.addTarget(self, action: "buttonTappedDelete:", forControlEvents: .TouchUpInside)
...
2) 你必须实现选择器: 2.1) 获取按钮所在的单元格。 2.2) 获取单元格的索引路径。 2.3) 从表格视图中删除单元格并更新您的数据。
func buttonTappedDelete(sender: UIButton)
let cell = sender.superview!.superview as! UITableViewCell
let indexPath = self.tableView.indexPathForCell(cell)!
self.tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade)
// update your data model, call `self.tableView.reloadData()`
【讨论】:
以上是关于在表格视图单元格中使用按钮出列单元格的主要内容,如果未能解决你的问题,请参考以下文章