2013-06-21 17 views
6
Ben

UINavigationController popToViewController sorunu

RegistrationView

Normal Case kontrolörleri navigasyon başa UINavigationController kullanıyorum

-> LoginView -> HomeView

HomeView & başka sonraki kontrolörleri itibaren var Çıkış Düğmesine sahip olan bir ekran açılır. Bu butona tıkladığınızda, normal durumda LoginView'a ekran açılır. Kullanıcı kez burada uygulama otomatik oturum açma işlevi olan Girildi ise Kullanıcı kez

- (IBAction)btnLogoutSelected:(id)sender 
{ 
    NSArray *navArr=self.navigationController.viewControllers; 
    for (UIViewController *nav in navArr) 
    { 
     if ([nav isKindOfClass:[LoginViewController class]]) 
     { 
      [self.navigationController popToViewController:nav animated:YES]; 
     } 
    } 
} 

& kaydedilir. Yani o zaman LoginView Navigasyon sayısında olmayacak. Yani bu senaryoda yukarıdaki kod çalışmıyor. Yani o zaman LoginView'e gidemiyorum. Bu sorunu çözmek için yardıma ihtiyacım var. Şimdiden teşekkürler

cevap

8

Bu, sadece bunu oluşturmak deneyin:

LoginViewController* loginController = [[LoginViewController alloc] init]; //use appropriate initWith... method 

Sonra UINavigationController ait viewControllers özelliğini kullanabilirsiniz . Geçerli görünüm denetleyicisini loginController ile değiştirebilir veya verilen dizine loginController ekleyebilir ve ona ekleyebilirsiniz.

NSMutableArray* newViewControllers = [self.navigationController.viewControllers mutableCopy]; 
[newViewControllers replaceObjectAtIndex:[newViewControllers indexOfObject:self] withObject:loginController]; 
[self.navigationController setViewControllers:newViewControllers animated:YES]; 
+2

Aynı cevabı yayınlamak üzereydim :) +1 Yuvaya John: 'RegistrationViewController'ı kopyalayarak kendi' viewControllers' kümenizi oluşturabilir ve üzerine yaratılan taze 'LoginViewController' öğesini ekleyebilir ve ardından teklif edilen yığını yığın haline getirebilirsiniz. Michal tarafından –

+0

@ michal-ciuba Teşekkürler, düzgün çalışıyor & konseptin arkasında. –

+0

@ bogdan-weidmann Teşekkürler. –

3

gezinme yığını üzerinde LoginViewController bir örneğini yok durumda

if ([self.navigationController.viewControllers containsObject:objLogin]) { 
      [self.navigationController popToViewController:objLogin animated:TRUE]; 
     } 
     else { 
      [self.navigationController pushViewController:objLogin animated:TRUE]; 
     } 
+0

bu iyi çalışabilir, haklısın, Ama NavigationController sayıma değildir bu yüzden otomatik giriş senaryonun zamanda LoginView navigasyon ilave edilmeyecektir. –

+2

O zaman, o zamanlar ViewController .. –

+0

'u itmelisiniz ya da sunmalısınız. Doğru zamanda, navigasyon hakkında pek bir şey bilmiyordum. –