2016-11-10 37 views
0

我在iPhone應用程序中有多個視圖控制器,我從開始使用導航控制器。如何知道viewController已經訪問或沒有?

我的問題是:當我要去第一個viewController。然後我轉到第二個viewController,然後回到第一個viewController。在這裏,我怎麼知道我已經看到了第一種觀點。意思是我想知道我是否訪問了第一個viewController?

我怎麼知道這個?因爲我在一個viewController中有一個功能,我希望這個功能應該只運行一次而不是一次又一次。

任何人都可以請幫我解決這個問題。

感謝,

+1

剛剛創建單獨的類並用它來追蹤,因爲它堅持通過應用程序的生命 – Tj3n

回答

0
Create an array in app delegate. 
In viewDidload add an object of current View controller in an Array. 
Then finally you can check from array. 
If there will be name for a view controller class. 
That means user has visited to that class. 
As viewdidLoad only calls when user visits a view controller. 
2

有將堆棧那些UIViewController中的UINavigationController的這是目前存在的導航控制器管理,

正如你沒有提到你的語言的標籤,我張貼代碼在Objective-C

NSArray *viewControllers = [[self navigationController] viewControllers]; 
for(int i=0;i<[viewControllers count];i++){ 
    id obj=[viewControllers objectAtIndex:i]; 
    if([obj isKindOfClass:[YourViewController class]]){ 
     // This view controller is visited by user and currently in the stack 
    } 
} 
0

您創建一個NSObject的:類和委託現在是否訪問,你可以手動保存viewContr或者不是。

或者您也可以通過prepareForSegue方法來發送一個標誌,並根據u可以知道哪些是看過或未

或者只是創建導航視圖控制器類檢查棧的viewController是最後那個陣列英寸

0

你應該做到這一點。

如果您想在應用程序生命週期中只執行一次窗體第一個viewController的代碼,那麼保持一個布爾標誌將其保存在NSUserDefaults中。 更重要的是,做這個東西,在viewDidLoad中第一的viewController的

看到這裏

FirstViewController.m

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    BOOL isFirstTime = [defaults boolForKey:@"FIRST_TIME"]; 

    if (isFirstTime == NO) 
    { 
     [defaults setBool:YES forKey:@"FIRST_TIME"]; 

     //Here Call Your Code 
     [self callYourFunctionHere]; 
     [defaults synchronize]; 
    } 
} 
相關問題