1

我知道這個問題已經被許多用戶詢問過,但我沒有找到適合我的問題的解決方案。'試圖彈出到不存在的視圖控制器

我正在使用splitViewController,我已隱藏我的rootViewControllerdetailViewController我推動並彈出不同的ViewControllers

當我從導航到ViewController-1ViewController-2去罰款,當我從viewController-2再次使用[self.navigationController popViewControllerAnimated:NO ];其做工精細返回回ViewController-1

現在,當我從ViewController-2導航到ViewController-3並返回到ViewController-2其工作正常。

但是現在,當我從ViewController-2返回ViewController-1時,它正在因以下錯誤而崩潰。

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Tried to pop to a view controller that doesn't exist 

我已啓用殭屍對象。我的應用程序 image

代碼下面給出: 1.AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 

    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
    self.splitViewController =[[UISplitViewController alloc]init]; 

    // create master and detailViewController for splitView 
    self.rootViewController=[[RootViewController alloc]init]; 
    self.detailViewController=[[LoginViewController alloc]initWithNibName:@"LoginViewController" bundle:nil] ; 

    //create navigation controller for root and detailViewController 
    self.rootNav=[[UINavigationController alloc]initWithRootViewController:rootViewController]; 
    self.detailNav=[[UINavigationController alloc]initWithRootViewController:detailViewController]; 

    //make hide navigation bar 
    self.rootNav.navigationBarHidden = YES; 
    self.detailNav.navigationBarHidden = YES; 

    //set splitViewController with root and detail viewController 
    self.splitViewController.viewControllers=[NSArray arrayWithObjects:self.rootNav,self.detailNav,nil]; 
    self.splitViewController.delegate=self.detailViewController; 

    // Now Add the split view controller's view to the window and display. 
    [self.window addSubview:self.splitViewController.view]; 
    self.window.rootViewController = self.splitViewController; 
    [self.window makeKeyAndVisible]; 


    return YES; 
} 

2.push和流行ViewControllers

push() 
{ 
AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate]; 
MyViewController *Vc = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil]; 

[appDelegate.detailNav pushViewController:Vc animated:NO]; 
} 

pop() 
{ 
    AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate]; 

    [appDelegate.detailNav popViewControllerAnimated:NO]; 
} 
+0

你可以發表一些代碼?你的描述看起來不錯。 – Rashad

+0

@walinaqvi,請張貼一些代碼,你很好地解釋了你的問題。這很可能是你沒有正確推動某處 – Pavan

+0

當然,這裏是我的代碼,用於推送新的viewController我使用:[self.navigationController pushViewController:MyViewContrller animated:NO]; 彈出Viewcontroller i;'m使用:[self.navigationController popViewControllerAnimated:NO]; –

回答

0

終於讓我找到了解決辦法,這是非常愚蠢的錯誤,我的ViewController-3是UINavigationController的委託。

當我試圖將viewController-2彈出到viewController-1時,我的UINavigationController在viewController-3中查找其已委託的委託方法- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated

我做了rootViewController到UINavigationController的委託,現在它的工作正常。

相關問題