我需要检测是否在UITableViewController中单击了按钮
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let LikesBtn = cell.viewWithTag(7) as! UIButton
}
Swift中最简单,最有效的方法是回调闭包。
UITableViewCell
,用于标识UI元素的 viewWithTag 方法已过时。将自定义单元格的类设置为子类的名称,然后ButtonCellIdentifier
在Interface Builder 中将标识符设置为。
添加一个callback
属性。
添加一个动作并将按钮连接到该动作。
class ButtonCell: UITableViewCell {
var callback : (() -> Void)?
@IBAction func buttonPressed(_ sender : UIButton) {
callback?()
}
}
在cellForRow
回调分配到自定义单元格。
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "ButtonCellIdentifier", for: indexPath) as! ButtonCell
cell.callback = {
print("Button pressed", indexPath)
}
return cell
}
当按下按钮时,将调用回调。索引路径被捕获。
编辑
如果可以添加或删除细胞,则有一个警告。在这种情况下,将UITableViewCell
实例作为参数传递并从那里获取索引路径
class ButtonCell: UITableViewCell {
var callback : ((UITableViewCell) -> Void)?
@IBAction func buttonPressed(_ sender : UIButton) {
callback?(self)
}
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "ButtonCellIdentifier", for: indexPath) as! ButtonCell
let item = dataSourceArray[indexPath.row]
// do something with item
cell.callback = { cell in
let actualIndexPath = tableView.indexPath(for: cell)!
print("Button pressed", actualIndexPath)
}
return cell
}
如果甚至section
可以更改,那么协议/委托可能会更有效。
假设有几个以编程方式创建的按钮,并且有一个通用的按钮处理程序。 如何理解处理器内部哪个按钮被按下? 而不在函数调用中传递一些特殊的东西。那不行:< code > onButtonClicked(" button " I); 例如,在JavaScript中,在处理程序内部有< code>$(this),它可以立即“理解”按下了哪个按钮。 也许在颤振中也有类似的机制?我想在按钮上挂起属性(事先不知道哪
问题内容: 未调用音量按钮通知功能。 码: 在viewWillAppear中被调用 无论哪种情况,代码都不会到达print语句。 我正在尝试两种不同的方法来做到这一点,但都没有用。 我已遵循以下步骤:检测iPhone的音量按钮按下了吗? 问题答案: 使用第二种方法,密钥路径的值应为。那就是我们正在观察的财产。因此将代码更改为
问题内容: 我一直在为FF写我的脚本,但希望他们所做的工作很少,它们也可以在其他浏览器上运行,但是IE驱动程序似乎存在按钮问题? 我在按钮上有一个简单的webelement.click(),不会引发错误,但不单击按钮。在FF它的罚款。我可以获取文本,获取价值,所以我知道find语句是可以的,只是不会单击它。 想法或帮助会很棒 只是做 HTML-控件上有3个按钮,我现在只对登录感兴趣 问题答案: 遇
我想知道在多个按钮的列表中按下了哪个按钮。例如,如果按下了第二个按钮,则代码会检测到按下第二个向下的按钮,并返回类似于 。但是,我不知道该怎么做。当我搜索时,jQuery参与其中,但我没有使用jQuery。代码如下: 我尝试使用EventListner,通过将EventListner添加到创建的每个按钮,但这并不能区分单个按钮。请注意,每个按钮都有一个id为和一个类。 如果有人能帮忙,谢谢!
我有一个按钮:当我点击它时,它会发送一个ajax请求,然后,javascript代码在完成后将类“隐藏”添加到这个按钮上。 我怎么能等待ajax请求结束?发送单击命令后,我认为Selenium应该检测到按钮中何时添加了“隐藏”类,但我不知道如何检测。 你能帮我吗? 它不工作(我有一个超时):
我是Android新手。我正在尝试制作一个应用程序,它将在后台运行,并检测三次快速按下电源按钮。我查阅了很多资料,但无法澄清我的困惑。谁能给我一些建议吗?蒂亚。