从另一个 class 访问 IBOutlet
Accessing IBOutlet from another class
我正在从我的 ViewController
class 中调用一个 class 函数,如下所示:
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 中调用方法,一切正常:
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
}
}
我该如何解决这个问题?我在做什么wrong/not理解对吗?
提前致谢。
您访问通用 ViewController
,但需要使用现有 UIView
。做这样的事情:
class Test: UIViewController {
class func set_cornerRadius(yourView: UIView, radius: CGFloat) {
yourView.layer.cornerRadius = radius
}
}
这样,你传递 UIView
你想要设置角半径。
你像这样扩展你的 ViewController class:
extension ViewController {
func set_cornerRadius(radius: CGFloat) {
someButton.layer.cornerRadius = radius
}
}
现在您可以在您的原始 ViewController
文件中调用此方法,使用: set_cornerRadius(someValue)
在您的 viewDidLoad
或任何您想要的地方。您可以将此扩展名放在不同的文件中。
我正在从我的 ViewController
class 中调用一个 class 函数,如下所示:
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 中调用方法,一切正常:
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
}
}
我该如何解决这个问题?我在做什么wrong/not理解对吗?
提前致谢。
您访问通用 ViewController
,但需要使用现有 UIView
。做这样的事情:
class Test: UIViewController {
class func set_cornerRadius(yourView: UIView, radius: CGFloat) {
yourView.layer.cornerRadius = radius
}
}
这样,你传递 UIView
你想要设置角半径。
你像这样扩展你的 ViewController class:
extension ViewController {
func set_cornerRadius(radius: CGFloat) {
someButton.layer.cornerRadius = radius
}
}
现在您可以在您的原始 ViewController
文件中调用此方法,使用: set_cornerRadius(someValue)
在您的 viewDidLoad
或任何您想要的地方。您可以将此扩展名放在不同的文件中。