UIButton不适用于自定义UITableViewCell(Swift)

时间:2015-10-26 20:31:05

标签: ios swift uitableview uibutton

我真的很抱歉我的英语,如果我弄错了,这是我的第一个问题。

我有一个自定义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)
}

和第一行的断点。但是这个函数永远不会被调用。

当我点击它时,我也明白按钮没有动画。

如何修复或找到解决方案的方法?

提前谢谢

4 个答案:

答案 0 :(得分:4)

您在笔尖中使用UIView作为根视图。对于自定义UITableViewCell,您需要将根视图设为UITableViewCell:

enter image description here

因此,您必须创建一个空的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)

您使用了这个魔术按钮吗? enter image description here

多亏了它,您才能看到您的图层树,它可能会满足某些奇怪的要求…… enter image description here

查看其余部分的视图,该视图在那里混乱。只是调查,队友! ?