当前位置: 首页 > 面试题库 >

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

郑博
2023-03-14
问题内容

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

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

一旦知道索引路径,就可以确定需要将哪个学生的信息传递给下一个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
}

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


 类似资料:
  • 我正在编写一个使用ChessClock类的游戏应用程序。这两个运动员每人都有一个钟。时钟每十分之一秒向自己发送一个信息流,如果运行,则减少剩余时间。当时间到期时,时钟会调用父视图组中的一个方法,该方法会停止时钟并设置一个标志,该标志会导致忽略进一步的触摸事件,从而用户无法再移动工件。我正在用kotlin写作,但我认为java程序员也会明白这一点: 这可以正常工作,但是如果用户按下后退按钮然后开始一

  • 问题内容: 我正在开始一个大型的Codeigniter项目,并想尝试为内容片段(如可能在不同页面/控制器上显示的数据循环)创建一些可重用的“迷你”视图。 从主控制器的视图中调用视图更好吗?如果是这样,怎么办?还是应该从控制器调用“迷你视图”,然后将视图的代码传递给主视图? 问题答案: 其他视图中的视图称为 嵌套视图 。在CodeIgniter中包括嵌套视图的方法有两种: 1.将嵌套视图加载到控制器

  • 问题内容: 在向我显示重复项之前,请注意,我已经在网站上进行搜索,发现了 一些 示例,但并非完全针对我的问题:) 在SQL中创建 友谊 表的最佳方法是什么,但是要确保每行都是唯一的,因为无论它们属于哪一列,相同的UserID和FriendID都不会被允许? 我有这个粗略的例子 并有2个外键,分别来自UserID和FriendID。 不过目前,我可以在用户之间插入 两次 Friendship ,从而

  • 假设有几个以编程方式创建的按钮,并且有一个通用的按钮处理程序。 如何理解处理器内部哪个按钮被按下? 而不在函数调用中传递一些特殊的东西。那不行:< code > onButtonClicked(" button " I); 例如,在JavaScript中,在处理程序内部有< code>$(this),它可以立即“理解”按下了哪个按钮。 也许在颤振中也有类似的机制?我想在按钮上挂起属性(事先不知道哪

  • 关于 Web 图形 设计 Web 图形时,所要关注的问题与设计印刷图形截然不同。有关存储 Web 图形的视频,请参阅 www.adobe.com/go/vid0063_cn。有关在 Web 应用程序之间进行导入、复制以及粘贴的视频,请参阅 www.adobe.com/go/vid0193_cn。 为了帮助您在 Web 图形方面作出客观决策,请记住以下三项原则: 1. 使用 Web 安全颜色。 颜色

  • 问题内容: 在设计表时,我养成了一种习惯,即有一列是唯一的,并且我将其作为主键。这可以通过三种方式来实现,具体取决于需求: 自动递增的标识整数列。 唯一标识符(GUID) 可以用作行标识符列的短字符(x)或整数(或其他相对较小的数字类型)列 数字3将用于较小的查找,大多数是读取的表,这些表可能具有唯一的静态长度字符串代码或数字值,例如年份或其他数字。 在大多数情况下,所有其他表将具有自动递增的整数