2014-02-27 37 views
1

我有一个类似于应用程序的仪表板,并且在某些时候我想回弹到“仪表板”视图控制器。我无法更改根视图控制器。我完成这项任务的方式是通过一个静态实例。我使用此代码:将公共视图控制器的流行视图控制器

static DashboardViewController *instance; 
+ (instancetype) instance { 
    return instance; 
} 

此实例在viewDidLoad中设置为self。

所以后来当我要弹出该控制器使用:

[self.navigationController popToViewController:[DashboardViewController instance] animated:YES]; 

我想知道这是否是去还是这应该是不同的方式?

+1

如果仪表板视图 - 控制(VC)是在栈中,那么它的罚款。从你的措辞看来,Dashboard VC不是VC的根源。但是,如果它*是根VC,则可以使用[self.navigationController popToRootViewControllerAnimated:YES]。 –

+0

如果您使用此viewcontroller的一个实例,则此方法正常。如果存在多个实例可能会出现问题。 –

回答

4

试试这个,

for (UIViewController *viewController in [self.navigationController viewControllers]) { 

    //you can also use NSClassFromString(@"DashboardViewController") instead of [DashboardViewController class] 
    if ([viewController isKindOfClass:[DashboardViewController class]]) { 
     [self.navigationController popToViewController:viewController animated:YES]; 
    } 
} 
+0

谢谢,非常偏远。当它通过循环完全循环而没有结果时,我会实例化并弹出来,谢谢 – Haagenti

+0

@MouNtant,欢迎您。快乐的编码 – Akhilrajtr

3
for (UIViewController *controller in self.navigationController.viewControllers) 
{ 
    if ([controller isKindOfClass:[DashboardViewController class]]) 
    { 
     //Do not forget to import DashboardViewController.h 

     [self.navigationController popToViewController:controller animated:YES]; 
     break; 
    } 
} 
相关问题