我有一个表格视图,其中有数量可变的单元格,代表学生,对应于他们特定的讲师.它们是带有按钮的自定义单元格,可以触发到新VC的序列,显示该单元格所在学生的详细信息.我的问题是:
在swift中,识别按下哪个按钮的最佳实践是什么?
一旦我知道了索引路径,我就可以确定哪些学生的信息需要传递给下一个VC.在下面的帖子中,有一个关于目标C的很好的答案,但我不知道如何翻译成Swift.任何帮助都将不胜感激.
我有一个表格视图,其中有数量可变的单元格,代表学生,对应于他们特定的讲师.它们是带有按钮的自定义单元格,可以触发到新VC的序列,显示该单元格所在学生的详细信息.我的问题是:
在swift中,识别按下哪个按钮的最佳实践是什么?
一旦我知道了索引路径,我就可以确定哪些学生的信息需要传递给下一个VC.在下面的帖子中,有一个关于目标C的很好的答案,但我不知道如何翻译成Swift.任何帮助都将不胜感激.
如果您的代码允许,我建议您将UIButton
标记设置为indexPath.row
,这样当其操作被触发时,您可以在触发方法期间拉出标记,从而从按钮数据中取出行.例如,在cellForRowAtIndexPath
中,可以设置标签:
button.tag = indexPath.row
button.addTarget(self, action: "buttonClicked:", forControlEvents: UIControlEvents.TouchUpInside)
然后在buttonClicked:
中,您可以获取标记,从而获取行:
func buttonClicked(sender:UIButton) {
let buttonRow = sender.tag
}
否则,如果出于某种原因,这对您的代码不利,请快速翻译this Objective-C answer you linked to:
- (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 {
...
}
}