2016-11-08 76 views
0

在导航堆栈,我有6个视图控制器 像 A-> B-> C-> D-> E->˚F在导航卸下的ViewController堆栈

在视图控制器˚F,我想回到视图控制器B,我该怎么做?我想逐个删除视图控制器。提前致谢!

+0

[看看这个答案](HTTP:/ /stackoverflow.com/questions/3027559/can-i-pop-to-specific-viewcontroller) – Mahesh

回答

0

你可以使用responder链来达到你的targetVC并弹出它上面的那个。

+0

如果你想清除视图控制器中的数据,你需要有你自己的函数来手动重置你的VC。 –

-2

试试:

[self.navigationController popToViewController:vcB animated:Yes]; 
1

如果你想直接弹出到B级的ViewController然后尝试以下。

for (UIViewController *VC in [self.navigationController viewControllers]) 
{ 
    // here B is ViewCotroller Class Name 
    if ([VC isKindOfClass:[B class]]) 
    { 
     [self.navigationController popToViewController:VC animated:TRUE]; 
     break; 
    } 
} 

[self.navigationController viewControllers]返回当前导航堆栈的ViewControllers数组。我使用For(每个)循环来从数组中找出我们的视图控制器(它是B ViewController)。如果匹配,我们将对该ViewController执行Pop操作。

+0

正确答案mahesh。 –

+0

@balkaransingh是的,我和你也是。但让我们看看Agal Sivamanoj想要什么。 – Mahesh

+0

@感谢Mahesh和balkaransingh,弹出后我想清除所有数据。例如,弹出后,我有一个图像在视图控制器上,我想清除弹出后, –

2

使用此:

for (UIViewController *controller in self.navigationController.viewControllers) 
{ 
    if ([controller isKindOfClass:[B class]]) 
    { 
     [self.navigationController popToViewController:controller animated:YES]; 
     break; 
    } 
} 
0

感谢您的意见Rin和Kirandeep库马尔,我已经试过这样的,它现在正

[self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:1] animated:YES]; 

但我想删除所有数据视图控制器即objectAtindex:1 请分享如何做到这一点 谢谢

0

另一个答案是,为了移除viewcontroller我们能够使用通知还

[[NSNotificationCenter defaultCenter]postNotificationName:@"new" object:nil]; 

我已经发布了通知在FVC和BVC我注册和观察到的所述通知和该方法我移除的ViewController和清楚的是数据