从另一个类访问IBOutlet [英] Accessing IBOutlet from another class
问题描述
我从 ViewController
类中调用类函数,如下所示:
Buttons.set_cornerRadius(10)
我有另一个 .swift
文件中我声明函数:
class Buttons {
func set_cornerRadius(radius:CGFloat){
ViewController()。someButton.layer.cornerRadius = radius
}
}
当我试图运行它时会引发错误:在解包可选值时意外发现为nil
/ p>
我已经选中了 Storyboard-IBOutlet 连接。
如果我在类似这样的类中调用方法,一切工作:
class ViewController:UIViewController {
@IBOutlet weak var someButton:UIButton!
override func viewDidLoad(){
super.viewDidLoad()
set_cornerRadius(10)
}
func set_cornerRadius(radius:CGFloat ){
someButton.layer.cornerRadius = radius
}
}
如何解决这个问题?
提前感谢。
您可以访问一个 ViewController
,但需要使用现有的 UIView
。做这样的事情:
类测试:UIViewController {
class func set_cornerRadius(yourView:UIView, radius:CGFloat){
yourView.layer.cornerRadius = radius
}
}
这样,你传递要设置拐角半径的 UIView
。
I am calling a class function from my ViewController
class like this:
Buttons.set_cornerRadius(10)
I have another .swift
file where I have the function declared:
class Buttons {
class func set_cornerRadius(radius: CGFloat) {
ViewController().someButton.layer.cornerRadius = radius
}
}
When I'm trying to run this it throws the error: "Unexpectedly found nil while unwrapping an optional Value"
.
I checked the Storyboard-IBOutlet connections already. Everything is connected right.
If I call the method in the same class like this, everything works:
class ViewController: UIViewController {
@IBOutlet weak var someButton: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
set_cornerRadius(10)
}
func set_cornerRadius(radius: CGFloat) {
someButton.layer.cornerRadius = radius
}
}
How can I fix this? What am I doing wrong/not understanding right?
Thanks in advance.
You access a generic ViewController
, but need to use an existing UIView
. Do something like this:
class Test: UIViewController {
class func set_cornerRadius(yourView: UIView, radius: CGFloat) {
yourView.layer.cornerRadius = radius
}
}
That way, you pass the UIView
you want to set the corner-radius.
这篇关于从另一个类访问IBOutlet的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!