Problemes de hiérarchie de vue

allianallian Membre
21:02 modifié dans API UIKit #1
Bonjour,
je suis toujours avec mon pacman qui marche très bien maintenant :D il suit parfaitement mon doigts au travers du labyrinthe.

Pour vous expliquer j'ai une image de fond qui représente le labyrinthe et apres j'ai un tableau qui "traduit" ce dernier en 0/1 le probleme est que j'ai ma vue qui dessine les boules à  attraper qui n'arrive pas à  se dessiner par dessus l'image de fond.

VOila comment mon code est structuré. J'ai une classe labyrinthe qui dessine les boules à  partir de mon tableau dans la méthode drawRect(), ensuite cette UIView est attribuée dans ma classe principale UIViewController dans la méthode viewDidLoad() comme ceci :

- (void)viewDidLoad {<br />	<br />	self.title = @&quot;Bleeker&quot;;<br />	<br />	Labirynthe *myLabi = [[Labirynthe alloc] init];<br />	self.view = myLabi;<br />	self.view.backgroundColor = [UIColor clearColor];<br />	<br />	monBleeker = [[MyBleeker alloc] init];<br />	monBleeker.isBad = NO;<br />	monBleeker.x = 16.0;<br />	monBleeker.y = 16.0;<br /><br />	[self.view insertSubview:monBleeker.view atIndex:1];<br />	<br />	self.view.userInteractionEnabled = YES;<br />&nbsp; &nbsp; [super viewDidLoad];<br />}<br />


Si dans cette méthode je fais ceci
UIImageView *blah = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@&quot;background.jpg&quot;]];<br />	[self.view addSubview:blah];<br />	[self.view sendSubviewToBack:blah];<br />	[blah release];


L'image de fond s'affiche par dessus mes boules.
Et si je fais la même chose pour le UIView des boules en l'insérant au dessus de l'image c'est la meme chose, mais cela vient du fait que ma classe Labyrinthe ne s'affiche que si je l'attribue comme ceci :

self.view = myLaby; //instance de ma classe

Avez vous une idée de comment faire ?
Merci

Réponses

  • muqaddarmuqaddar Administrateur
    21:02 modifié #2
    J'ai pas tout compris mais si t'as 2 vues qui se superposent, pourquoi ne pas faire :

    [self.view addSubview:labyrinthe.view];
    [self.view addSubview:boules.view];

    ce qui suffit à  prendre l'ordre de superposition normalement ?!
  • allianallian Membre
    21:02 modifié #3
    En faite le soucis vient du fait que dans ma UIView j'ai une image de fond et apres je dessine des boules mais les boules ne se dessinent pas par dessus l'image.
    Et dans ma UIViewController ma UIView n'est pas reconnue en tant que vue car si je fais un addSubview elle ne s'ajoute pas, elle s'ajoute uniquement si je fais un self.view = maVue;
  • DrakenDraken Membre
    21:02 modifié #4
    Pourquoi est-ce que tu n'utilise pas une seule UIView pour tout dessiner ? En commençant par dessiner l'image de fond, puis les boules par dessus ?




  • Philippe49Philippe49 Membre
    21:02 modifié #5
    Pour attribuer une UIView à  un UIViewController par le code, il faut faire ceci dans la méhtode loadView, pas dans la méthode viewDidLoad.

    Donc si tu crées ton UIViewController en lien avec un xib les lignes
    Labirynthe *myLabi = [[Labirynthe alloc] init];
    self.view = myLabi;
    sont à  remplacer par
    Labirynthe *myLabi = [[Labirynthe alloc] init];
    [self.view addSubview:myLabi];
    [myLabi autorelease];

    sinon le code est à  mettre dans la méthode loadView:
  • allianallian Membre
    21:02 modifié #6
    Merci pour ta réponse Philippe, entre temps j'avais trouvé la solution :D
    J'ai plus de soucis maintenant.
Connectez-vous ou Inscrivez-vous pour répondre.