您好,我正在尝试弄清楚如何在情节提要中的UItable中的自定义单元格内调用UIButton。目前,我有一个库,可以创建一个工作正常的辅助菜单(更多信息在此处),并且可以看到启动模拟器时放置的按钮。但是,当我单击按钮时,动作是而不是触发的,能否请您指导我如何实现此目标?
需要特别注意,该表完全在情节提要中创建。
我在TopratedVC.swift
中的进行中代码获取用于触发操作的按钮:
override func viewDidLoad() {
super.viewDidLoad()
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("UITableViewVibrantCell") as! CellClassMenu
cell.sendFeedBackBtn.tag = indexPath.row
cell.sendFeedBackBtn.addTarget(self, action: "sendFeedBackBtnAction:", forControlEvents: .TouchUpInside)
cell.contentView.userInteractionEnabled = false //tried with true as well, no difference
cell.bringSubviewToFront(cell.sendFeedBackBtn)
cell.userInteractionEnabled = true
return cell
}
func sendFeedBackBtnAction(sender: UIButton){
print("sendFeedBackBtnAction tapped")
}
我的
UITableViewVibrantCell.swift
文件包含以下内容:import UIKit
class UITableViewVibrantCell: UITableViewCell {
@IBOutlet var sendFeedBackBtn: UIButton!
}
我的
sndFeedBackBtn
具有UITableViewVibrantCellsendFeedBackBtn
的引用出口,该出口具有UITableViewVibrantCell
的类。我究竟做错了什么?谢谢。模拟器中的外观:
最佳答案
在您的帖子中,您将显示一个UITableViewVibrantCell
类,并使用“UITableViewVibrantCell”标识符使一个单元出队,但是将其强制转换为CellClassMenu
?
无论如何,最好是为操作创建一个单元委托,并让您的控制器决定实现,而不是每次单元出队时都添加一个目标。您可以这样做:
UITableViewVibrantCell
import UIKit
protocol UITableViewVibrantCellDelegate: NSObjectProtocol {
func buttonPressed(sender: UIButton)
}
class UITableViewVibrantCell: UITableViewCell {
var delegate: UITableViewVibrantCellDelegate?
@IBOutlet var feedbackButton: UIButton!
override func awakeFromNib() {
super.awakeFromNib()
feedBackButton.addTarget(self, action: #selector(self.buttonPressed(_:)), forControlEvents: .TouchUpInside)
}
func buttonPressed(sender: UIButton) {
delegate?.buttonPressed(sender)
}
}
顶级VC
class TopratedVC: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("UITableViewVibrantCell") as! UITableViewVibrantCell
cell.delegate = self
return cell
}
// MARK: - UITableViewVibrantCellDelegate
func buttonPressed(sender: UIButton) {
print("feedbackButton tapped")
}
}
关于ios - 表内的UIButton不触发,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39234636/