2013-04-18 12 views
29

I have a UIView->UICollectionView->UICollectionViewCell. Sto cercando di tornare indietro programmaticamente ma nessuno di questi funziona. Il codice ha chiamato. Sto usando StoryBoard.Naviga Torna al controller di visualizzazione precedente

- (void) goBack:(NSNotification *) notification { 
     // [self.navigationController popViewControllerAnimated:YES]; 
    // [self dismissViewControllerAnimated:YES completion:nil]; 
     [self.navigationController popToRootViewControllerAnimated:YES]; 
} 
+0

Mostrami il codice di azione del pulsante o il codice di notifica? – Balu

+0

Stai diventando self.navigationControlle come non nulla nella tua classe? Controllare questo. –

+0

[[NSNotificationCenter defaultCenter] postNotificationName: @ oggetto "goBack": nil]; – user1688346

risposta

83

è necessario utilizzare:

[self.navigationController popToRootViewControllerAnimated:YES]; 

Questo vi porterà indietro al controller della vista root.

Se si vuole tornare indietro alla precedente controller di vista, è necessario implementare:

[self.navigationController popViewControllerAnimated:YES]; 
+0

questo codice non funziona per me –

+0

Hai impostato UINavigationController come rootViewController? Se no, allora non funzionerà. –

0
- (void) goBack:(NSNotification *) notification 
{ 
    if(!self.YOrView.isHidden) 
     self.YOrView.hidden = YES; 
} 
1

Provatelo ....

#import "bookdescriViewController.h" // import here your class name 

- (IBAction)backButton:(id)sender 
{ 
    bookdescriViewController *previosVC = [[bookdescriViewController alloc]init]; 
    [self.navigationController popViewControllerAnimated:YES]; // go to previous view controller 
    [self.navigationController popToRootViewControllerAnimated:YES]; // go to root view controller 
    [self.navigationController popToViewController:previosVC animated:YES]; // go to any view controller 
    [previosVC release]; 
} 
5

ne dite ...

[self.navigationController dismissViewControllerAnimated:YES completion:NULL]; 

Supponendo che siete attualmente in un controller di navigazione-based e si voleva tornare al controller precedente prima di entrare in un controller basato sulla navigazione.

17

Utilizzando sotto la linea siamo in grado di andare a vista primaria di controllo

[self.navigationController popViewControllerAnimated:YES]; 

Utilizzando sotto la linea siamo in grado di passare al controllore della vista principale/root

Utilizzando la linea in basso possiamo passare a qualsiasi View Controller

[self.navigationController popToViewController:viewControllerObject animated:YES]; 
3

soluzioni Swift per una facile copia incolla:

navigationController?.popViewControllerAnimated(true) 
0

Torna controller della vista genitore e dealloc corrente View Controller es:

- (void)applicationDidEnterBackground:(NSNotification *)notification 
{ 
    NSInteger numberOfViewControllers = self.navigationController.viewControllers.count; 

    UIViewController *vc = [self.navigationController.viewControllers objectAtIndex:numberOfViewControllers - 2]; 

    [self.navigationController popToViewController:vc animated:NO]; 
} 

o in un altro controller di vista

1

Con swift3,

@IBAction func back(_ sender: UIButton) { 
    self.dismiss(animated: true, completion: nil)  
} 
Problemi correlati