【发布时间】:2015-02-12 20:18:06
【问题描述】:
我正在尝试使用 Swift 完成我认为很简单的任务。我创建了一个自定义 TableView 单元格并为其添加了一个按钮。我希望能够看到当你点击按钮时会发生一些动作。不幸的是,当我单击按钮时,什么也没有发生。有人可以对此有所了解吗?我把代码放在下面:
自定义 TableView 单元格:
import UIKit
class TestTableViewCell: UITableViewCell {
@IBOutlet weak var testBtn: UIButton!
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
override func setSelected(selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
func buttonTappedOnCell()
{
println("buttonTapped!")
}
}
下面是正在调用的视图控制器中的代码:
func tableView(tableView: UITableView,
cellForRowAtIndexPath
indexPath: NSIndexPath) -> UITableViewCell {
tableView.registerNib(UINib(nibName:"TestTableViewCell", bundle:nil), forCellReuseIdentifier:"TestButtonCell")
let cell =
tableView.dequeueReusableCellWithIdentifier("TestButtonCell", forIndexPath: indexPath) as TestTableViewCell
cell.testBtn.addTarget(cell, action: "buttonTappedOnCell", forControlEvents: UIControlEvents.TouchDown)
return cell
}
我还尝试更改调用以包含 ':' -> cell.testBtn.addTarget(cell, action: "buttonTappedOnCell:", forControlEvents: UIControlEvents.TouchDown) 但这不起作用。我尝试的另一件事是将调用函数移动到视图控制器中,并将目标操作指向 self。不幸的是,这也不起作用。这个工作的一个简单的例子会很棒。在一天结束时,希望能够有一个自定义的表格视图单元格,其中包含 6 个单选按钮,允许用户只选择一个。但是在这一点上,婴儿先一步。感谢您的帮助。
【问题讨论】:
-
至少,我会将
.addTarget(...移动到单元格子类中。每次出队时都不需要重新分配按钮的目标。所以,相反,在awakeFromNib中,执行如下操作:testBtn.addTarget(self, action: "buttonTappedOnCell", forControlEvents:.TouchUpInside) -
另外,
registerNib实际上只需要在UITableViewController生命周期中出现一次,将其移入viewDidLoad -
只是检查基础知识:您确定您已将
IBOutlet正确设置为单元格的按钮吗?如果是nil,可能是它没有转发其触摸事件的原因。
标签: ios uitableview cocoa-touch swift