从另一个类访问IBOutlet

我从我的ViewController类调用类函数,如下所示:

 Buttons.set_cornerRadius(10) 

我有另一个.swift文件,我声明了这个函数:

 class Buttons { class func set_cornerRadius(radius: CGFloat) { ViewController().someButton.layer.cornerRadius = radius } } 

当我试图运行它时会抛出错误: "Unexpectedly found nil while unwrapping an optional Value"

我已经检查了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 。 做这样的事情:

 class Test: UIViewController { class func set_cornerRadius(yourView: UIView, radius: CGFloat) { yourView.layer.cornerRadius = radius } } 

这样,你传递了想要设置角半径的UIView

您可以像这样扩展ViewController类:

 extension ViewController { func set_cornerRadius(radius: CGFloat) { someButton.layer.cornerRadius = radius } } 

现在,您可以使用viewDidLoad set_cornerRadius(someValue)或您想要的任何位置在原始ViewController文件中调用此方法。 您可以将此扩展名放在不同的文件中。