2010-09-22 5 views
0

Y at-il quelque chose qui peut appeler un - (vide) chaque fois qu'une vue montre. Je suis en rotation entre deux vues, donc quand je vais à la deuxième vue, puis revenez à la première vue, je veux qu'un vide soit appelé automatiquement à partir de la première vue J'ai essayé de le faire avec - (void) viewWillAppear: (BOOL) animée et - (vide) viewDidLoad en mettant un NSLog en eux mais il n'imprime pas quand je reviens à la première vue. des suggestions?appel vide sur l'affichage de la vue

Répondre

0

Si vous mettez à jour la première vue avec les données de la seconde, utilisez un observateur sur le modèle en cours de mise à jour. Si la deuxième vue est supprimée en tant que sous-vue, vous pouvez observer les sous-vues. Vous pouvez également utiliser une fermeture de rappel de bloc.

Dans l'interface:

IBAction(^doOnClose)(void); 

et:

@property (nonatomic, copy) IBAction(^doOnClose)(void); 

Dans la méthode qui ferme votre deuxième vue:

if(doOnClose) doOnClose(); 

Et enfin définir de votre première vue:

view2.doOnClose = ^{/*Do this when view 2 closes*/}; 
+0

Je ne l'ai pas vraiment eu ce que vous suggérez donc si vous s'il vous plaît préciser pouvez. voici mon code – Spire

0

I ont deux méthodes dans le délégué d'application

-(void)goTo1{ 

[self.window addSubview:[viewController view]]; 
[settingsViewController.view removeFromSuperview]; 


[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:1.0]; 
    //removing the settingsViewController form the view and setting the animation 
    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:window cache:NO]; 

    [UIView commitAnimations]; 
    [settingsViewController release]; 
    settingsViewController = nil; } 

et

-(void)goTo2{ 

//calling the .xib file and the SettingsViewController 
SettingsViewController *aSettingsView = [[SettingsViewController alloc] initWithNibName:@"Settings" bundle:nil]; 
[self setSettingsViewController:aSettingsView]; 
[aSettingsView release]; 

[self.window addSubview:[settingsViewController view]]; 
//moving the view 30px down 
[[settingsViewController view] setFrame:CGRectMake(0, 20, 320, 460)]; 

[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:1.0]; 
//setting the animation 
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:window cache:YES]; 

[UIView commitAnimations]; 
[webskiAppBetaViewController release]; 
webskiAppBetaViewController = nil; 
} 

et IBActions dans les 2 contrôleurs de vue premier

-(IBAction)goToView2{ 

WebskiAppBetaAppDelegate *mainDelegate = (WebskiAppBetaAppDelegate *)[[UIApplication sharedApplication] delegate]; 
[mainDelegate goTo2]; 
} 

et second

-(IBAction)goToView1{ 
WebskiAppBetaAppDelegate *maniDelegate = (WebskiAppBetaAppDelegate *)[[UIApplication sharedApplication] delegate]; 
[maniDelegate goTo1]; 
} 

maintenant quand je l'appelle goToVIew1 Je veux aussi courir une méthode qui est dans la vue 1

quelque chose comme ça

-(IBAction)goToView1{ 

WebskiAppBetaAppDelegate *maniDelegate = (WebskiAppBetaAppDelegate *)[[UIApplication sharedApplication] delegate]; 
[maniDelegate goTo1]; 
[self methodInFirstVIew]; //this method is in the first view 
} 
Questions connexes