2016-05-18 2 views
0

Je construis une liste avec une fonction de case à cocher, où le symbole de contrôle est un enfant de la case à cocher vide. Dans touchesBegan :, la case à cocher devrait passer de caché à non caché, et de retour, à chaque fois que la case est cochée. Le code ressemble à ceci:Les nœuds cachés n'apparaissent pas avec childnodewithname

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { 
    if let touch = touches.first { 
     location = touch.locationInNode(self) 
     for node in self.nodesAtPoint(location) { 
      if node.childNodeWithName("checkSymbol")?.hidden == true { 
       node.childNodeWithName("checkSymbol")?.hidden = false 
      } else if childNodeWithName("checkSymbol")?.hidden == false { 
       node.childNodeWithName("checkSymbol")?.hidden = true 
      } 
     } 
    } 
} 

Le problème est childNode (le nœud checkSymbol) n'est pas repris par la méthode .nodesAtPoint() quand il est caché. C'est la raison pour laquelle j'ai essayé de contourner l'approche .childNodeWithName() ci-dessus, mais la boîte reste vérifiée pour les touches suivantes. Quelqu'un at-il une suggestion pour résoudre ce problème?

Répondre

1

Si vous souhaitez que les nœuds cachés soient capturés par le nodesAtPoint, vous pouvez toujours changer votre implémentation de caché.

Vous pouvez également utiliser node.zPosition = -1, en supposant que vous avez un nœud d'arrière-plan avec zPosition 0 pour vous cacher derrière.

+0

Merci cocojoe. C'est une bonne alternative –