2016-09-29 94 views

回答

0

在當前視圖控制器的viewDidAppear(),viewWillAppear()viewDidLoad()方法中使用以下代碼。我用它viewDidLoad()方法。

for (int i=0;i<[self.navigationController.viewControllers count];i++) 
{ 
    NSLog(@"%d>>>>>>>>>%@",[self.navigationController.viewControllers objectAtIndex:i]); 
} 
+0

唯一的問題是:你不能跟蹤它,它只是一個控制檯的記錄器。 – prabodhprakash

+0

我只需要檢查用戶瀏覽過的視圖,並在用戶已經通過層次結構中的視圖控制器時顯示標籤。 –

+0

爲您可以添加一個全球或本地位,這將檢查用戶是否通過當前視圖控制器來到 –

2

我在我的一個項目中遇到了類似的問題,我創建了一個維護一堆ViewController的單例類。每個ViewController負責從堆棧推送和彈出自己。因此,只要我們想要用戶遵循流程,我們就會查詢堆棧。

它對我們來說相當不錯。

2

您可以通過比較其檢查你的控制器,把你需要的類,而不是「XYZViewController」的

for (UIViewController * aController in self.navigationController.viewControllers) 
    { 
     if (aController isKindOfClass:[XYZViewController class]) 
     { 
      //You can do your work here 
     } 
    } 
+0

嗯,我在尋找一種可以在所有情況下使用的一般方法。 –

+1

你可以在AppDelegate中設置一個變量並通過它比較所需的一個類 –

+0

@MdIbrahimHassan這個解決方案有什麼問題?你應該接受這個。 –

1

您可以使用這種方式的導航堆棧結識之前其的viewController在那裏你到達了某個View控制器。

這裏是代碼:

for (UIViewController *vc in self.navigationController.viewControllers) { 
    NSLog(@"vc desc : %@", vc.description); 
} 

但是,如果你想顯示的標籤,如果用戶來自某些VC,當其他的ViewController前來VC不顯示的標籤,然後在ViewController中使用一個布爾值,在該布爾值中需要顯示標籤,然後將布爾值設置爲YES,同時從前一個VC推入並檢查該布爾值以顯示標籤。

相關問題