我真的很抱歉我的英语,如果我弄错了,这是我的第一个问题。
我有一个自定义UITableViewCell作为* .xib文件中的视图。其中有UIImage,UIImage上有一个按钮。 我将此按钮连接到CustomTableViewCell.swift类的插座。
@IBOutlet weak var authorImage: UIImageView!
@IBOutlet weak var authorButton: UIButton!
在MyTableViewController.swift中,我注册了一个笔尖
tableView.registerNib(UINib(nibName: "CustomTableViewCell", bundle: nil), forCellReuseIdentifier: "my_cell")
写了一个cellForRow ......这样的函数:
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("my_cell", forIndexPath: indexPath) as! CustomTableViewCell
cell.authorButton.addTarget(self, action: "authorButtonPressed:", forControlEvents: .TouchUpInside)
return cell
}
最后,我有了这个函数(我在addTarget中使用...):
func authorButtonPressed (sender:UIButton!) {
print("Hi!")//line1
print(sender)
}
和第一行的断点。但是这个函数永远不会被调用。
当我点击它时,我也明白按钮没有动画。
如何修复或找到解决方案的方法?
提前谢谢
答案 0 :(得分:4)
您在笔尖中使用UIView
作为根视图。对于自定义UITableViewCell
,您需要将根视图设为UITableViewCell:
因此,您必须创建一个空的xib,然后在其上拖动UITableViewCell。然后开始将您的子视图添加到ContentView
答案 1 :(得分:0)
您不应该在此功能上添加添加目标:
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("my_cell", forIndexPath: indexPath) as! CustomTableViewCell
**cell.authorButton.addTarget(self, action: "authorButtonPressed:", forControlEvents: .TouchUpInside)**
return cell
}
您只需将插座操作添加到您的单元格中即可。没事的。喜欢这段代码:
@IBAction func testPressed(sender: AnyObject) {
print("test")
}
答案 2 :(得分:0)
按照joern解决方案,然后点击它选择表视图单元格,并确保应启用 启用用户交互 <的复选标记/ strong>属性检查器窗格的属性。
答案 3 :(得分:0)