一尘不染

检测表视图中按下的uibutton:Swift最佳做法

swift

我有一个表格视图,其中包含可变数量的单元格,这些单元格代表与他们的特定讲师相对应的学生。它们是带有按钮的自定义单元格,该按钮触发了对新VC的选择,从而显示了有关该单元格所在的学生的详细信息。我的问题是:

快速识别哪个按钮被按下的最佳实践是什么?

一旦知道索引路径,就可以确定需要将哪个学生的信息传递给下一个VC。在下面的文章中,对于目标C会有一个很好的答案,但是我不确定如何转换为Swift。任何帮助将非常感激。


阅读 255

收藏
2020-07-07

共1个答案

一尘不染

如果您的代码允许,我建议您将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
}

否则,如果由于某种原因不利于您的代码,请将此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 {
        ...
    }
}
2020-07-07