2016-10-02 2 views
0

J'écris une application en utilisant un cadre de connectivité multipeer. Un de mes appareils va préparer une liste d'éléments UIView et les envoyer à l'autre périphérique. Lorsque l'autre appareil reçoit la liste, il la place sur la vue et l'affiche.Swift: Mettre à jour UIView en utilisant la connectivité multipeer

Cependant, j'ai trouvé que l'appareil peut recevoir la liste, et peut imprimer les images de chacun des éléments de la liste. Cependant, il le place sur l'écran avec une boucle for, mais la vue ne sera jamais mise à jour. Une idée de ce que j'ai manqué? ContainerView est déjà affiché lors du lancement de l'application.

func placeViews() { 
    for (string, item) in self.imageViewItemViews { 
     debugPrint(string, item.frame) // print out what it received correctly 
     self.containerView.addSubview(item) 
    } 
    } 

J'ai également appelé self.containerView.setNeedsDisplay()

+0

Vous pouvez vérifier toutes les sous-vues lorsque l'application est en cours d'exécution à l'aide de la hiérarchie de la vue Débogage (vue 3D). J'ai joint l'image pour la même chose dans ma réponse. –

Répondre

1

Il est possible que les sous-vues soient de retour dans la hiérarchie des vues. vous pouvez même vérifier ceci avec hiérarchie de vue de débogage (vue 3D) comme ci-dessous l'image.

Debug view hierarchy

Si votre point de vue sont de retour de l'écran principal, vous pouvez utiliser ce code, même si vous ne connaissez pas Superview:

In-c Objectif:

[subview.superview bringSubviewToFront: subview]; 

En swift:

subview.superview.bringSubviewToFront(subview) 

J'espère que ça va vous aider.

+0

Bien qu'il ne peut toujours pas résoudre mon problème, vous me faites savoir qu'il existe un tel mode de débogage et je peux l'utiliser à l'avenir. Merci. – user6539552

+0

@ user6539552 Bon vous avez résolu votre propre problème et ma réponse vous aidera dans le débogage. –

0

Enfin, j'ai trouvé que c'est parce que mon code n'est pas exécuté sur le thread principal, et donc il ne met pas à jour l'interface utilisateur.