我正在调用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
}
}
我该如何解决这个问题?我做错了什么/不理解对不对?
提前致谢。
答案 0 :(得分:4)
您可以访问通用ViewController
,但需要使用现有的UIView
。做这样的事情:
class Test: UIViewController {
class func set_cornerRadius(yourView: UIView, radius: CGFloat) {
yourView.layer.cornerRadius = radius
}
}
这样,您传递了想要设置角半径的UIView
。
答案 1 :(得分:2)
您可以像这样扩展ViewController类:
extension ViewController {
func set_cornerRadius(radius: CGFloat) {
someButton.layer.cornerRadius = radius
}
}
现在,您可以使用ViewController
中的set_cornerRadius(someValue)
或您想要的任何地方,在原始viewDidLoad
文件中调用此方法。您可以将此扩展程序放在不同的文件中。