我的视图控制器中的代码在 Swift playground 中多次 运行
The code in my view controller is running multiple times in Swift playground
我正在尝试制作一个应用程序,它只是一个背景和一个按钮,当按下该按钮时,会出现具有另一个背景的第二个视图。我从以下位置获得了 UIImage 的代码:https://youtu.be/4wodsPzFHQk
import UIKit
import PlaygroundSupport
final class MyViewController: UIViewController {
override func loadView() {
let view = UIView()
let BG = UIImageView(frame: UIScreen.main.bounds)
BG.image = UIImage(named:"Photo.png")
BG.contentMode = .scaleAspectFill
BG.insertSubview(view, at:0)
}
}
PlaygroundPage.current.needsIndefiniteExecution = true
PlaygroundPage.current.liveView = MyViewController()
问题是,当我 运行 带有函数的代码单步执行我的代码时,我看到从 override func loadView()
到 BG.insertSubview(view, at:0)
的代码多次 运行 .
The view controller calls this method when its view
property is requested but is currently nil
. This method loads or creates a view and assigns it to the view
property.
由于 MyViewController
中的 loadView
实现从未分配 view
属性,它仍然是 nil
,这意味着下一次 view
属性 被访问,loadView
被再次调用。
要解决此问题,您可以在 loadView
实施的末尾添加 self.view = view
。
我正在尝试制作一个应用程序,它只是一个背景和一个按钮,当按下该按钮时,会出现具有另一个背景的第二个视图。我从以下位置获得了 UIImage 的代码:https://youtu.be/4wodsPzFHQk
import UIKit
import PlaygroundSupport
final class MyViewController: UIViewController {
override func loadView() {
let view = UIView()
let BG = UIImageView(frame: UIScreen.main.bounds)
BG.image = UIImage(named:"Photo.png")
BG.contentMode = .scaleAspectFill
BG.insertSubview(view, at:0)
}
}
PlaygroundPage.current.needsIndefiniteExecution = true
PlaygroundPage.current.liveView = MyViewController()
问题是,当我 运行 带有函数的代码单步执行我的代码时,我看到从 override func loadView()
到 BG.insertSubview(view, at:0)
的代码多次 运行 .
The view controller calls this method when its
view
property is requested but is currentlynil
. This method loads or creates a view and assigns it to theview
property.
由于 MyViewController
中的 loadView
实现从未分配 view
属性,它仍然是 nil
,这意味着下一次 view
属性 被访问,loadView
被再次调用。
要解决此问题,您可以在 loadView
实施的末尾添加 self.view = view
。