UITableViewVibrantCell

UITableViewVibrantCell

您好,我正在尝试弄清楚如何在情节提要中的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的类。我究竟做错了什么?谢谢。

模拟器中的外观:
ios - 表内的UIButton不触发-LMLPHP

最佳答案

在您的帖子中,您将显示一个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/

10-13 04:07