2011-10-07 2 views
2

J'ai un UIViewController 1 sur ce UIButton (ajouté comme subview), après avoir appuyé sur Button (voir photo 1 ci-dessous) dessus en ajoutant un autre UIViewController 2 avec animation du bas vers le haut après une action:UIViewController présente un autre UIViewController

[[[UIApplication sharedApplication] keyWindow] addSubview:self.view]; 

Et il chevauche UIButton, comment puis-je ajouter cette sous-vue qu'il ne couvre pas UIButton (voir fig.2 ci-dessous)

fig.1:

enter image description here

pic. 2:

enter image description here

+0

Aucune image téléchargée? – saadnib

+0

Que diriez-vous de définir le cadre pour la vue? – beryllium

+0

ne fonctionne pas, si je présente UIView sans animation peut-être il va travailler, a besoin d'une autre manière – LightNight

Répondre

2

Vous n'avez pas montré le code d'animation, mais je suppose que vous ajoutez la sous-vue hors écran, changez alors il est cadre (animation) pour la faire glisser dans la vue. À la place, ajoutez la nouvelle sous-vue en utilisant insertSubview:belowSubview:, en passant votre bouton comme second argument. De cette façon, le bouton chevauchera la nouvelle vue, au lieu de l'inverse. addSubview: met toujours la nouvelle vue au-dessus de tous les autres.

EDIT

De vos commentaires, il semble que vous ajoutez le deuxième contrôleur de vue à l'écran en utilisant presentModalViewController: donc la méthode ci-dessus ne fonctionnera pas. Autant que je sache, il n'y a aucun moyen de garder un élément du contrôleur de vue d'origine au-dessus de la vue du nouveau contrôleur de vue si vous le présentez de cette façon.

Vous devrez peut-être créer un nouveau UIWindow et définir windowLevel à UIWindowLevelAlert pour maintenir votre bouton. Cela le gardera au-dessus de l'une des vues ci-dessous. Ajoutez cette fenêtre en tant que sous-vue à la fenêtre principale.

+0

Cette méthode ne fonctionne pas pour moi. J'ai besoin d'ajouter UIViewController 2 avec animation sans chevauchement Button, sur un autre UIViewController 1. – LightNight

+0

Ah oui, vous présentez donc le second contrôleur d'affichage de manière modale, et vous voulez qu'il sous-vienne une sous-vue de votre premier contrôleur de vue? – jrturton

+0

oui, c'est ce que je veux – LightNight

1
{ 
SecondViewController *objComing=[[SecondViewController alloc] init]; 
[self.view addSubview:objComing.view]; 

objComing.view.backgroundColor=[UIColor blueColor]; 

objComing.view.frame=CGRectMake(0,420, 320, 0); 
[UIView beginAnimations:nil context:nil]; 
[UIView setAnimationDuration:0.5]; 

[UIView setAnimationCurve:UIViewAnimationCurveEaseIn]; 
objComing.view.frame=CGRectMake(0,0, 320, 420); 

[UIView commitAnimations]; 

}

Mettez ce code dans l'action du bouton et remplacer secondViewController avec votre ViewController.

Questions connexes