以编程方式添加和更改自定义 UIView (Swift)
Adding and changing a custom UIView programmatically (Swift)
我正在尝试创建一个可以在我的其他 UIViewController 中使用的自定义 UIView。
自定义视图:
import UIKit
class customView: UIView {
override init(frame: CGRect) {
super.init(frame:frame)
let myLabel = UILabel(frame: CGRect(x: 0, y: 0, width: 250, height: 100))
addSubview(myLabel)
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
}
然后我想将它添加到一个单独的 UIViewController 中:
let newView = customView(frame:CGRectMake(0, 0, 500, 400))
self.view.addSubview(newView)
这可以显示视图,但是我需要添加什么才能更改嵌入自定义视图的 UIViewController 的属性(例如 myLabel)?
我希望能够从 viewController 访问和更改标签,允许我更改文本、alpha、字体或使用点符号隐藏标签:
newView.myLabel.text = "changed label!"
现在尝试访问标签会出现错误 "Value of type 'customView' has no member 'myLabel'"
非常感谢您的帮助!
这是因为 属性 myLabel
未在 class 级别声明。将 属性 声明移动到 class 级别并将其标记为 public。然后你就可以从外面访问它了。
类似
import UIKit
class customView: UIView {
public myLabel: UILabel?
override init(frame: CGRect) {
super.init(frame:frame)
myLabel = UILabel(frame: CGRect(x: 0, y: 0, width: 250, height: 100))
addSubview(myLabel!)
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
}
我正在尝试创建一个可以在我的其他 UIViewController 中使用的自定义 UIView。
自定义视图:
import UIKit
class customView: UIView {
override init(frame: CGRect) {
super.init(frame:frame)
let myLabel = UILabel(frame: CGRect(x: 0, y: 0, width: 250, height: 100))
addSubview(myLabel)
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
}
然后我想将它添加到一个单独的 UIViewController 中:
let newView = customView(frame:CGRectMake(0, 0, 500, 400))
self.view.addSubview(newView)
这可以显示视图,但是我需要添加什么才能更改嵌入自定义视图的 UIViewController 的属性(例如 myLabel)?
我希望能够从 viewController 访问和更改标签,允许我更改文本、alpha、字体或使用点符号隐藏标签:
newView.myLabel.text = "changed label!"
现在尝试访问标签会出现错误 "Value of type 'customView' has no member 'myLabel'"
非常感谢您的帮助!
这是因为 属性 myLabel
未在 class 级别声明。将 属性 声明移动到 class 级别并将其标记为 public。然后你就可以从外面访问它了。
类似
import UIKit
class customView: UIView {
public myLabel: UILabel?
override init(frame: CGRect) {
super.init(frame:frame)
myLabel = UILabel(frame: CGRect(x: 0, y: 0, width: 250, height: 100))
addSubview(myLabel!)
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
}