вызов void при отображении вида - PullRequest
0 голосов
/ 22 сентября 2010

есть что-то, что может вызывать - (void) каждый раз, когда отображается представление. Я вращаюсь между двумя видами, поэтому, когда я перехожу ко второму виду и затем возвращаюсь к первому виду, я хочу, чтобы пустота автоматически вызывалась из первого вида Я пытаюсь сделать это с - (void) viewWillAppear: (BOOL) анимированные и - (void) viewDidLoad помещая в них NSLog, но он не печатается, когда я возвращаюсь к первому виду. какие-либо предложения?

Ответы [ 2 ]

0 голосов
/ 22 сентября 2010

У меня есть два метода в приложении делегат

-(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; }

и

-(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;
}

и IBActions во 2-х контроллерах вида первый One

-(IBAction)goToView2{

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

и второйone

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

поэтому теперь, когда я вызываю goToVIew1, я также хочу запустить метод, который находится в представлении 1

что-то вроде этого

-(IBAction)goToView1{

 WebskiAppBetaAppDelegate *maniDelegate = (WebskiAppBetaAppDelegate *)[[UIApplication sharedApplication] delegate];
 [maniDelegate goTo1];
[self methodInFirstVIew]; //this method is in the first view
}
0 голосов
/ 22 сентября 2010

Если вы обновляете первый вид данными из второго, используйте наблюдателя на обновляемой модели. Если второе представление удаляется как подпредставление, вы можете наблюдать подпредставления. Кроме того, вы можете использовать закрытие обратного вызова блока.

В интерфейсе:

IBAction(^doOnClose)(void);

и

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

В методе, который закрывает ваше второе представление:

if(doOnClose) doOnClose();

И, наконец, определим его с первого взгляда:

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