下面的代码允许我访问 WalkthroughView
的 testView 属性。
class WalkthroughViewController: UIViewController{
var walkthroughView = WalkthroughView()
override func loadView() {
self.view = walkthroughView
}
override func viewDidLoad() {
super.viewDidLoad()
walkthroughView.testView.backgroundColor = .cyan
}
}
以下代码不允许我访问 WalkthroughView
的 testView 属性。
class WalkthroughViewController: UIViewController{
override func loadView() {
self.view = WalkthroughView()
}
override func viewDidLoad() {
super.viewDidLoad()
//cant access the .testView
self.view.testView.backgroundColor = .cyan //this doesn't compile
}
}
这怎么可能?第一个示例创建了一个 WalkThroughView
对象,它被分配给 self.view。稍后调用此对象允许我更改它的属性。第二个示例将 WalkthroughView()
分配给 ViewController 的 View ,使用这种方法(据我所知)不可能访问 WalkthroughView
属性。
为什么第二种方法不允许我访问 WalkthroughView
testView
属性?
最佳答案
在您的第一个示例中,您定义了一个 WalkThroughView 类型的实例变量 walkThroughView。然后,您通过具有特殊类型的新变量引用它。
在您的第二个示例中,您创建了一个新的 WalkthroughView 实例并将其存储到 View Controller 的 View 属性中,然后通过现有 View 属性引用它。编译器不知道 self.view 包含 WalkThroughView 类型的变量。您需要对其进行强制转换才能使其合法。
if let walkthroughView = self.view as? WalkThroughView {
walkthroughView.testview.backgroundColor = .cyan
}
关于ios - 将 ViewController 的 View 分配给自定义 View 类不会显示自定义 View 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41433291/