Swift:在 public 函数中使用 "self" 定位父 ViewController?
Swift: using "self" to target parent ViewController in public functions?
我想创建 "Components" 以将它们添加到 UI,在 public 函数中定义它们,例如:
public func addBackground () {
var myWhiteView = UIView()
myWhiteView.frame = CGRectMake(0, 0, self.view.frame.width, 30)
myWhiteView.backgroundColor = UIColor.whiteColor()
self.view.addSubview(myWhiteView)
println("added white")
}
}
显然如果我不在UIViewControllerclass,使用self。不是 allowed/possible。我如何定位父 ViewController 以后可能是谁?
让函数接受UIView
类型的参数:
public func addBackground (view: UIView) {
var myWhiteView = UIView()
myWhiteView.frame = CGRectMake(0, 0, view.frame.width, 30)
myWhiteView.backgroundColor = UIColor.whiteColor()
view.addSubview(myWhiteView)
println("added white")
}
如果您确实需要在视图控制器上工作,请将参数更改为 UIViewController
,否则我建议保留 UIView
,因为它更通用,您可以与任何视图一起使用。
作为替代解决方案,您可能需要考虑向 UIView
:
添加一个扩展
extension UIView {
public func addBackground () {
var myWhiteView = UIView()
myWhiteView.frame = CGRectMake(0, 0, self.frame.width, 30)
myWhiteView.backgroundColor = UIColor.whiteColor()
self.addSubview(myWhiteView)
println("added white")
}
}
或UIViewController
:
extension UIViewController {
public func addBackground () {
var myWhiteView = UIView()
myWhiteView.frame = CGRectMake(0, 0, self.view.frame.width, 30)
myWhiteView.backgroundColor = UIColor.whiteColor()
self.view.addSubview(myWhiteView)
println("added white")
}
}
我想创建 "Components" 以将它们添加到 UI,在 public 函数中定义它们,例如:
public func addBackground () {
var myWhiteView = UIView()
myWhiteView.frame = CGRectMake(0, 0, self.view.frame.width, 30)
myWhiteView.backgroundColor = UIColor.whiteColor()
self.view.addSubview(myWhiteView)
println("added white")
}
}
显然如果我不在UIViewControllerclass,使用self。不是 allowed/possible。我如何定位父 ViewController 以后可能是谁?
让函数接受UIView
类型的参数:
public func addBackground (view: UIView) {
var myWhiteView = UIView()
myWhiteView.frame = CGRectMake(0, 0, view.frame.width, 30)
myWhiteView.backgroundColor = UIColor.whiteColor()
view.addSubview(myWhiteView)
println("added white")
}
如果您确实需要在视图控制器上工作,请将参数更改为 UIViewController
,否则我建议保留 UIView
,因为它更通用,您可以与任何视图一起使用。
作为替代解决方案,您可能需要考虑向 UIView
:
extension UIView {
public func addBackground () {
var myWhiteView = UIView()
myWhiteView.frame = CGRectMake(0, 0, self.frame.width, 30)
myWhiteView.backgroundColor = UIColor.whiteColor()
self.addSubview(myWhiteView)
println("added white")
}
}
或UIViewController
:
extension UIViewController {
public func addBackground () {
var myWhiteView = UIView()
myWhiteView.frame = CGRectMake(0, 0, self.view.frame.width, 30)
myWhiteView.backgroundColor = UIColor.whiteColor()
self.view.addSubview(myWhiteView)
println("added white")
}
}