另一类呼叫选择器-Swift 3

另一类呼叫选择器-Swift 3,swift,class,uibutton,selector,Swift,Class,Uibutton,Selector,我正在从“Utils_类”创建一个UIbutton,并将其返回到我的“getBtsDetails”类。 我成功地实现了将“buttonAction”函数调用到“getBtsDetails”中,但随后它返回了一个错误 “在展开可选值时意外发现nil” 还有我的第二节课,Utils: public func createButton(text: String!, buttonY: Int!) -> UIButton { helpClasses = GetBTSDetails.init(

我正在从“Utils_类”创建一个UIbutton,并将其返回到我的“getBtsDetails”类。 我成功地实现了将“buttonAction”函数调用到“getBtsDetails”中,但随后它返回了一个错误

“在展开可选值时意外发现nil”

还有我的第二节课,Utils:

public func createButton(text: String!, buttonY: Int!) -> UIButton {
    helpClasses = GetBTSDetails.init()
    let button = UIButton(type: UIButtonType.system) as UIButton
    button.frame = CGRect(x:0, y:buttonY, width:self.screenWidth/5, height:15)
    button.backgroundColor = UIColor.lightGray
    button.setTitle(text, for: UIControlState.normal)
    button.tintColor = UIColor.black
    button.addTarget(btsClasse, action: #selector(btsClasse.buttonAction(_:)), for: .touchUpInside)

    return button
}

var btsClasse: GetBTSDetails!

因为你没有启动它

var btsClasse: GetBTSDetails!
所以当目标运行时

button.addTarget(btsClasse, action: #selector(btsClasse.buttonAction(_:)),for: .touchUpInside

buttonAction
中的内容将为零,因此您必须将
btsClasse
对象链接到当前实例,您从中引用选择器。好的,我最终成功了,只需创建类的新实例并替换:

var btsClasse: GetBTSDetails!


这样,我的类“GetBTSDetails”、所有函数和变量都已初始化,允许我调用UIButton操作。

那么,是否只需要添加:btsClasse=GetBTSDetails.init()对吗?非常感谢。如果GetBTSDetails在IB中,这也会崩溃,不知道如何显示详细信息,但在显示时,请将该变量从显示它的变量segue/present/push分配给self
var btsClasse: GetBTSDetails!
var btsClasse = GetBTSDetails()