2011-06-02 85 views
0

的nibName我有一個基於導航的應用程序。在某個屏幕上,我需要檢查用戶來自哪個屏幕。我考慮像檢查以前的UIViewController

NSArray *viewControllers = [self.navigationController viewControllers]; 
int viewControllersSize = [viewControllers count]; 
if ([[viewControllers objectAtIndex:viewControllersSize-2] nibName] == @"Name") { 
    ... 
} 

但問題是,如果用戶點擊從某一畫面「後退」時,視圖控制器將被從上面定義的數組中刪除。

我目前的解決方案是有一個全局變量,它告訴我,如果用戶從特定的屏幕來了,但我想還有一個更優雅的解決方案,對不對?

+0

得到它正常工作,然後擔心優雅。如果這是您需要的,全局變量沒有任何問題。 – Rayfleck 2011-06-02 16:26:37

+0

它正在與全局變量正常工作。 – Adriana 2011-06-02 16:33:12

+0

然後到下一個問題;-) – Rayfleck 2011-06-02 16:44:27

回答

0

不知道你的意思有:

但問題是,如果用戶點擊 「返回」從某一個屏幕, 視圖控制器會從數組中刪除 上述定義。

並非所有視圖控制器使用相同的導航控制器?

如果相同的UINavigationController用於所有UIViewControllers,你可以使用的UIViewController parentViewController用於此目的。如果採取相反的方式,保持參考視圖控制器你來自或可能只是[viewController類](字符串)會做的伎倆。

+0

我試着記錄「self.parentViewController.nibName」或「self.navigationController.parentViewController.nibName」,但它們都是空的... – Adriana 2011-06-03 09:27:05

+0

你分配哪種方式nibs?參見[這](http://developer.apple.com/library/ios/documentation/uikit/reference/UIViewController_Class/Reference/Reference.html#//apple_ref/occ/instp/UIViewController/nibName)獲取更多信息。 – TheBlack 2011-06-03 09:47:12

+0

exampleViewController * e = [[exampleViewController alloc] initWithNibName:@「ExampleView」 bundle:[NSBundle mainBundle]]; self.example = e; [e release]; – Adriana 2011-06-07 13:36:45