我想创建“组件”以将它们添加到UI,在公共函数中定义它们,如:
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")
}
}
显然,如果我不在UIViewController类中,请使用self。是不允许/可能的。我如何定位父ViewController谁可能会在以后?
答案 0 :(得分:2)
让函数接受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")
}
}