我有一个表格视图,其中包含可变数量的单元格,这些单元格代表与他们的特定讲师相对应的学生。它们是带有按钮的自定义单元格,该按钮触发了对新VC的选择,从而显示了有关该单元格所在的学生的详细信息。我的问题是:
快速识别哪个按钮被按下的最佳实践是什么?
一旦知道索引路径,就可以确定需要将哪个学生的信息传递给下一个VC。在下面的文章中,对于目标C会有一个很好的答案,但是我不确定如何转换为Swift。任何帮助将非常感激。
如果您的代码允许,我建议您将UIButton标签设置为indexPath.row,以便在触发其操作时可以拉出标签,从而在触发方法期间从按钮数据中移出。例如,cellForRowAtIndexPath您可以设置标签:
UIButton
indexPath.row
cellForRowAtIndexPath
button.tag = indexPath.row button.addTarget(self, action: "buttonClicked:", forControlEvents: UIControlEvents.TouchUpInside)
然后在中buttonClicked:,您可以获取标记,从而获取行:
buttonClicked:
func buttonClicked(sender:UIButton) { let buttonRow = sender.tag }
否则,如果由于某种原因不利于您的代码,请将此Objective-C的Swift翻译答复为:
- (void)checkButtonTapped:(id)sender { CGPoint buttonPosition = [sender convertPoint:CGPointZero toView:self.tableView]; NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:buttonPosition]; if (indexPath != nil) { ... } }
是:
func checkButtonTapped(sender:AnyObject) { let buttonPosition = sender.convert(CGPoint.zero, to: self.tableView) let indexPath = self.tableView.indexPathForRow(at: buttonPosition) if indexPath != nil { ... } }