web-dev-qa-db-fra.com

La vue en direct de l'aire de jeux Xcode 8 ne fonctionne pas

Dans mon Swift, j'ai entré le code suivant pour tester la fonction d'affichage en direct:

let view = UIView()

PlaygroundPage.current.liveView = view

Mais pour une raison quelconque, la vue en direct ne s'affiche pas à droite dans l'éditeur adjoint. Au début, je pensais que Xcode n'avait pas fini de gérer le terrain de jeu. Mais j'ai attendu et attendu et ça ne se voit toujours pas.

Capture d'écran: enter image description here

De l'aide?

11
Blip

J'ai eu ce même problème exact. J'ai trouvé une solution temporaire.

Ce que j'ai remarqué, c'est que si j'ouvrais plus d'un projet Xcode, cela provoquerait cette erreur. Alors, quittez complètement xcode (commande Q) et ouvrez uniquement le terrain de jeu en direct sur lequel vous essayez de travailler et cela devrait fonctionner.

Assurez-vous d'avoir les importations suivantes et vous voudrez peut-être lui donner un cadre et une couleur juste pour vous assurer qu'il fonctionne réellement car votre vue n'a ni cadre ni couleur. Ce code fonctionne pour moi.

import UIKit
import PlaygroundSupport

let view = UIView()
view.backgroundColor = .white
view.frame = CGRect(x: 0, y: 0, width: 100, height: 100)

PlaygroundPage.current.liveView = view

playground live view

24
maxcodes

Dans Xcode 9.0 ainsi que d'avoir:

PlaygroundPage.current.needsIndefiniteExecution = true

Vous devez ouvrir manuellement l'éditeur assistant, puis le terrain de jeu avec le focus actuel affichera UIView.

12
ReaddyEddy

J'ai également eu le même problème et la ligne de code suivante l'a résolu pour moi:

PlaygroundPage.current.needsIndefiniteExecution = true

La définition d'une vue en direct est censée l'activer automatiquement pour vous, mais pour moi, ce n'était pas le cas. Doit être un bug dans Xcode.

7
Jacob Caraballo

J'ai pu prévisualiser la vue de viewcontroller en ne laissant explicitement que la vue du contrôleur dans le code de l'aire de jeux comme ceci:

import UIKit
import PlaygroundSupport

class MyViewController : UIViewController {
    // ...
}

let controller = MyViewController()
PlaygroundPage.current.liveView = controller
controller.view // <- to the far right of this line in editor you'll be able to expand and see result
2
Konstantin Berkow

Définir une UIView en tant que vue en direct ne fonctionnait que pour moi sur les terrains de jeu iPad, mais pas dans Xcode.

Pour faire apparaître la vue dans la cour de récréation Xcode 9 et 10, je l'ai enveloppée dans un contrôleur de vue et je l'ai définie à la place (comme la cour de récréation par défaut):

import UIKit
import PlaygroundSupport

class MyViewController : UIViewController {
    override func loadView() {
        let view = UIView()
        view.backgroundColor = .white
        self.view = view
    }
}

PlaygroundPage.current.liveView = MyViewController()
2
ViktorCode