2014-02-27 196 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; 
    } 
} 
相關問題