其他类的呼叫选择器-Swift 3

时间:2018-09-15 10:33:53

标签: swift class uibutton selector

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

  

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

getBtsDetails :

let Utils_Class = Utils()
var labelY : Int = 90

override func viewDidLoad() {
    super.viewDidLoad()

    WS_Class.GetDiplomaSubject(id: Int(self.BTS_id)!) { number, responseObject, error in
        if((error) == nil) {

            #let's create an UIbutton from Utils_class which gonna call the buttonAction below
self.scrollview.addSubview(self.Utils_Class.createButton(text: "Calcul", buttonY:self.labelY+30))
            self.scrollview.contentSize.height = CGFloat(self.labelY+40)
        }
    }
}

@objc func buttonAction(_ sender:UIButton!)
{
    #the error occurs here
    print(self.Utils_Class.getTextFields(view : self.scrollview)/1)
}

我的第二堂课,实用工具:

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!

2 个答案:

答案 0 :(得分:1)

好吧,我终于成功了,只需创建类的新实例并替换:

var btsClasse: GetBTSDetails!

作者

var btsClasse = GetBTSDetails()

这样,我的类“ GetBTSDetails”,所有函数,变量都已初始化,可以调用UIButton动作。

答案 1 :(得分:0)

因为您没有初始化

var btsClasse: GetBTSDetails!

所以当目标运行时

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

buttonAction中的内容将为nil,因此您必须将btsClasse对象链接到所引用的实例,该实例引用了

的选择器