Home > OS >  The code in my view controller is running multiple times in swift playground
The code in my view controller is running multiple times in swift playground

Time:09-25

I'm new to swift and I'm trying to make an app that will just be a background and a button that when pressed will make a second view with another background appear I got the code for the UIImage from 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()


The problem is that when I run the code with the function step through my code I see that the code from override func loadView() to BG.insertSubview(view, at:0) is ran multiple times. Thanks for any help in advance

CodePudding user response:

From the loadView() documentation:

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.

Since the loadView implementation in MyViewController never assigns the view property, it remains nil which means that the next time the view property is accessed, loadView is called again.

To fix this you would add self.view = view at the end of the loadView implementation.

  • Related