从另一个类访问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
文件中调用此方法。 您可以将此扩展名放在不同的文件中。