2013-04-18 12 views
29

Mam numer UIView->UICollectionView->UICollectionViewCell. Próbuję nawigować z powrotem programowo, ale żadna z nich nie działa. Kod zadzwonił. Używam StoryBoard.Nawiguj Powrót do poprzedniego kontrolera widoku

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

pokaż mi swój kod akcji przycisku lub kod powiadomienia? – Balu

+0

Czy otrzymujesz self.navigationControlle jako zero w swojej klasie? Sprawdź to. –

+0

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

Odpowiedz

83

Trzeba użyć:

[self.navigationController popToRootViewControllerAnimated:YES]; 

To spowoduje powrót do kontrolera widoku głównym.

Jeśli chcesz poruszać się z powrotem do poprzedniego widoku kontrolera, należy wdrożyć:

[self.navigationController popViewControllerAnimated:YES]; 
+0

ten kod nie działa dla mnie –

+0

Czy ustawiłeś UINavigationController jako swój rootViewController? Jeśli nie, to nie zadziała. –

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

Spróbuj ....

#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

Jak o ...

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

Zakładając, że jesteś obecnie kontrolera nawigacyjnego opartego i chciałeś wróć do poprzedniego kontrolera, zanim przejdziesz do kontrolera nawigacyjnego.

17

Używając poniżej linii możemy przejść do nadrzędnej widoku kontrolera

[self.navigationController popViewControllerAnimated:YES]; 

Używając poniżej linii możemy przejdź do kontrolera widoku głównego/głównego

[self.navigationController popToRootViewControllerAnimated:YES]; 

Używając poniższej linii możemy przejść do dowolnego widok kontroler

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

Swift rozwiązania dla łatwego kopiowania wklejania:

navigationController?.popViewControllerAnimated(true) 
0

Wróć do nadrzędnej widoku kontrolera i dealloc bieżącego widoku kontrolera Ex:

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

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

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

lub innego kontrolera widoku

1

Z swift3,

@IBAction func back(_ sender: UIButton) { 
    self.dismiss(animated: true, completion: nil)  
} 
Powiązane problemy