从另一个 class - Swift 调用选择器 3
Call selector from nother class - Swift 3
我正在从 "Utils_class" 创建一个 UIbutton,然后 return 它到我的 "getBtsDetails" class。
我成功实现调用 "buttonAction" 函数实现到 "getBtsDetails",但随后它 return 出错
"Unexpectedly found nil while unwrapping an Optional value"
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)
}
还有我的第二个 class,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
中的内容将为 nil ,因此您必须 linkbtsClasse
反对您从
中引用选择器的呈现实例
好的,我终于成功了,只需创建我的 class 的新实例并替换:
var btsClasse: GetBTSDetails!
来自
var btsClasse = GetBTSDetails()
这样,我的 class "GetBTSDetails",所有函数、变量都已经初始化,允许我调用 UIButton 操作。
我正在从 "Utils_class" 创建一个 UIbutton,然后 return 它到我的 "getBtsDetails" class。 我成功实现调用 "buttonAction" 函数实现到 "getBtsDetails",但随后它 return 出错
"Unexpectedly found nil while unwrapping an Optional value"
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)
}
还有我的第二个 class,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
中的内容将为 nil ,因此您必须 linkbtsClasse
反对您从
好的,我终于成功了,只需创建我的 class 的新实例并替换:
var btsClasse: GetBTSDetails!
来自
var btsClasse = GetBTSDetails()
这样,我的 class "GetBTSDetails",所有函数、变量都已经初始化,允许我调用 UIButton 操作。