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

在按下按钮时在UITableViewCell中找到按钮的indexPath?

姬朗
2023-03-14
问题内容

下面的代码正确返回该单元格:

func findSuperView(sender:UIButton!) -> UITableViewCell { 
    var superView : UIView? = sender.superview 
    var foundSuperView : UITableViewCell!

    while superView != nil && foundSuperView == nil { 
        if let cell = superView as? UITableViewCell { 
            foundSuperView = cell 
            break 
        } 
        else { 
            superView = superView?.superview 
        } 
    } 
    return foundSuperView 
}

但是在表视图中查找indexpath会崩溃:

var indexPath : NSIndexPath = self.table .indexPathForCell(findSuperView(sender))!
println("Section (indexPath)")

我尝试了另一种方法,但是没有成功:

var button : UIButton = sender as UIButton; 
var touch: UITouch = events .allTouches()?.anyObject() as UITouch 
var location : CGPoint = touch.locationInView(self.table) 
var indexPath : NSIndexPath = self.table.indexPathForRowAtPoint(location)!

问题答案:

我不知道是否有简单的方法可以做到这一点。( 编辑:
实际上有。请查看@mustafa的第二个解决方案。)一种解决方法是将按钮的标签设置为indexPath.rowin
cellForRowAtIndexPath,然后可以仅访问按钮的标签以找出按钮所属的行。

警告:
此解决方法很脆弱。如果您允许在不调用的情况下从表中添加或删除行,则它将无法正常工作tableView.reloadData()。看一下@mustafa的解决方案,它的功能更强大。



 类似资料:
  • 问题内容: 嗨,我有一个带有三个按钮的自定义UITableViewCell,用于处理购物车功能,加号,减号和删除按钮,我需要知道已触摸哪个单元格。 我已经尝试使用“标签解决方案”,但是由于单元的生命周期,它无法正常工作。 谁能帮我找到解决方案? 提前致谢 问题答案: 我正在使用UITableViewCell的子类中的单元委托方法解决此问题。 快速概述: 1) 创建一个协议 2) 子类化 您的 子类

  • 我以编程方式生成了许多按钮(一些按钮用于增加值,而另一些按钮用于减少值),当它们调整的值达到最大值或最小值时,我会禁用这些按钮。(即,当达到最大值时,“增加”按钮被禁用,而当达到最小值时,“减少”按钮被禁用。)除了禁用,我还将按钮状态设置为“按下”,以直观地指示已达到极限值,并且按钮不再工作。 我的按钮onClickListener的'增加'按钮看起来像这样: ClickListeners上相应的

  • 我是一个新手,我正在尝试创建一个应用程序来在我的投资组合中使用。本质上,该程序是一个可以访问不同菜单的菜单(json文件:texas_pick.js,Breakth.js…),该程序旨在以按钮的形式显示菜单选项,按钮的详细信息从各自的json文件中检索。我面临的问题是,单击菜单选项时,会检索最后一个菜单项的数据。我将后端编程为只将商品名称和价格推送到数据库,而前端则检索这些数据并将其显示在表上。检

  • 所以我有这些按钮(3叠6个,18个),我想实现的是当我按下其中一个按钮时: > 边框颜色 其他按钮将重置为其正常样式 但是我不想通过“isEnable”技巧禁用其他的(我只在这里找到了涉及isEnable的解决方案),我仍然希望它们被启用,我只是希望它们不要在按下时被我的自定义样式“突出显示”。 对于第一部分,也就是我在IBAction中所做的造型: 这一小部分只是一个按钮,但我想如果我有18个按

  • 我试图从一个网站获取一个元素,我会得到这个错误: 我通过在inspect element中复制XPath来获取元素,并确保元素存在且可点击。以下是我的代码: 以下是代码: 我该怎么解决这个问题?

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