2017-10-04 4 views
0

J'ai besoin de votre aide.Comment supprimer un nœud et en ajouter un nouveau Swift

J'essaye de retirer un noeud et de charger un nouveau noeud après avoir rejeté le précédent.

En fait, j'ai pu l'enlever à l'aide dans une func séparée:

sceneView.scene.rootNode.enumerateChildNodes { (node, stop) in 
      node.removeFromParentNode() 
     } 

Mais après que je rappelle la fonction « addChild » le nouveau nœud n'apparaît pas sur la scène.

func addChild(object: String){ 
     if let dir = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first { 

      let path = dir.appendingPathComponent(object) 

      //reading 
      do { 
       scene = try SCNScene(url: path) 
       node = scene.rootNode 

      } 
      catch {/* error handling here */} 
     } 
     counter += 1 

    } 

« addChild » prend comme paramètre un élément de la matrice et le compteur se déplace le pointeur vers un autre élément de la matrice après chaque fois que l'func est appelée. EX: J'ai un tableau avec deux éléments et je veux que pour la première fois l'objet à montrer soit toujours le premier et ensuite quand je touche l'objet il sera enlevé et la fonction addChild doit être appelée de cette façon, l'élément précédent est supprimé du tableau et le suivant sera chargé grâce au compteur qui déplace le pointeur vers l'élément suivant.

Je ne sais pas si mon exemple était suffisamment explicatif. Merci d'avance!

+0

Ofc il devient à l'intérieur parce que le premier élément est affiché dans la scène ... –

Répondre

0

Correction juste en rappelant le "sceneView.scene = scène" à l'intérieur de la fonction, en supprimant l'élément de la matrice chaque fois que j'appelle la fonction removeChild.

func addChild (objet: String) { si dir = laisser FileManager.default.urls (pour: .documentDirectory, en: .userDomainMask) .first {

 let path = dir.appendingPathComponent(object) 

     //reading 
     do { 
      scene = try SCNScene(url: path) 
      node = scene.rootNode 
      sceneView.scene = scene 
     } 
     catch {/* error handling here */} 
    } 


}