自定义 uitableviewcell 中的 Uibuttons
Posted
技术标签:
【中文标题】自定义 uitableviewcell 中的 Uibuttons【英文标题】:Uibuttons inside a custom uitableviewcell 【发布时间】:2017-06-21 18:39:57 【问题描述】:我的自定义 UITableViewCell 中有 2 个按钮,一个用于添加已选择项目的 x1 数量,另一个用于减去 x1。如何为自定义类中的按钮设置 IBAction,以便能够修改整个页面中的元素并修改我的 View Controller 类中的值?解决这个问题的最佳方法是什么?
我附上了我的故事板的图像。
【问题讨论】:
【参考方案1】:在你的cellForRow
函数中,以这种方式添加按钮监听器
cell.plusBtn.addTarget(self, action: "plusBtnClicked:", for: .touchUpInside)
cell.minusBtn.addTarget(self, action: "minusBtnClicked:", for: .touchUpInside)
然后接听电话
func plusBtnClicked(_ sender: AnyObject?)
score += 1
self.tableView.reloadData()
func minusBtnClicked(_ sender: AnyObject?)
score -= 1
self.tableView.reloadData()
【讨论】:
buttonClicked 函数我只是将它添加到我的视图控制器中吗?自定义 UITableViewCell 类中不需要代码? @Blackroche 正确。该表格视图单元类将您的插座与代码链接,以便您可以在表格视图数据源和委托函数中访问。试试看,如果遇到问题,请告诉我。 所以在 cellForRow 中它将是 cell.button.addTarget(self, action: "buttonClicked:", for: .touchUpInside) 不是吗?因为我无法为我的 VC 中的按钮创建 IBOutlet 在我现在应用它之前的最后一件事,buttonClicked 函数,我只是在 VC 中创建它?是 tableView.reloadData() 里面唯一需要的东西(当然除了我自己的自定义代码)让它工作还是应该是 tableview.beginUpdates() 和 endUpdates()? 是的,把这个函数放在你的视图控制器中。因此,该功能仅在您单击按钮时提供条目。您需要在此函数中处理 +1/-1,然后更新表格视图。假设您的表格视图从局部变量加载分数,那么在此函数中您需要为此变量执行 +1/-1 然后调用 reloadData()【参考方案2】:您有多种选择。
一种是使用NSNotificationCenter。您可以添加任何需要 +1 / -1 警报的对象作为观察者,以便通过更新表格视图单元格知道的数量来获得警报。
另一个是以编程方式将动作添加到按钮,以 VC 作为目标,触发其选择器,因此按钮不会触发 TableViewCell 上的动作,它们会直接在需要触发的对象上触发动作处理它,而不是那些等待间接通知的对象。
【讨论】:
哪种方法更好? @Blackroche - 绝对不使用 NSNotificationCenter以上是关于自定义 uitableviewcell 中的 Uibuttons的主要内容,如果未能解决你的问题,请参考以下文章
自定义 UITableViewCell 中的 UIImageView 在单击时调整大小
ios开发UI篇—使用纯代码自定义UItableviewcell实现一个简单的微博界面布局
iOS开发UI篇—使用xib自定义UItableviewcell实现一个简单的团购应用界面布局
将自定义 UITableViewCell 从 nib 加载到 Swift 中的 UIViewController