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.
De l'aide?
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
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.
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.
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
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()