2013-10-09 54 views
-1

我有一個UIViewController與數據表,也是一個地圖,加載與註釋數據。如何在每次訪問時停止視圖控制器重新加載數據?

我想只有當用戶第一次訪問視圖時才加載數據,然後只有在他們通過更新按鈕調用方法時才重新加載數據。目前該視圖重新加載每次訪問的數據。我在viewDidLoad方法中調用了requestDataUITableViewload map方法。

我使用以下代碼將用戶發送到視圖。也許它迫使viewDidLoad方法每次:

-(IBAction)pushHomeButton{ 

// front view controller 

[self.homeBtn setTitleColor:customColorGrey forState:UIControlStateHighlighted]; 

[MBProgressHUD showHUDAddedTo:self.view animated:YES]; 

dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, 0.0001 * NSEC_PER_SEC); 
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){ 

    FrontViewController *myNewUIViewController = [[FrontViewController alloc] init]; 
    UINavigationController *myNavController = [[UINavigationController alloc] initWithRootViewController:myNewUIViewController]; 
    [self.revealController setFrontViewController:myNavController]; 
    // Putting back the front view on focus 
    [self.revealController showViewController:self.revealController.frontViewController]; 

}); 

}

感謝您的幫助。

+1

因此創建一個實例(標誌)變量。 – trojanfoe

+0

您是否正在將該視圖從其他視圖移開,並且不希望它再次加載。 ? – DogCoffee

+0

將代碼寫入'viewDidLoad'而不是'viewWillApear' – preetam

回答

2

所以你可以在viewDidLoad加載個數據,然後您在NSUserDefaults

變量您可以設置此即使應用負載:

[[NSUserDefaults standardUserDefaults] setObject:@"YES" forKey:@"FirstTime"]; 

,然後當你在的viewDidLoad中您的控制器

if ([[NSUserDefaults standardUserDefaults] objectForKey:@"FirstTime"]) { 

      [[NSUserDefaults standardUserDefaults] setObject:@"NO" forKey:@"FirstTime"]; 

      //Code for load data 


     } 
+2

爲什麼'NSUserDefaults'需要參與? (靜態)變量有什麼問題? – trojanfoe

+0

完美的工作!謝謝!!! – user2588945

1

從我的理解,它看起來像你將數據存儲到視圖控制器實例(你說你加載它在T他用viewDidLoad方法)。

你似乎想要的是數據加載後被緩存。你可以通過幾種方法來完成,最簡單的方法是將其存儲在全局上下文中,例如AppDelegate實例;在您的視圖控制器中的viewDidLoad方法中,您可以測試數據是否已經存在並且尚未到期,在這種情況下,您將跳過資源加載並使用它。否則,您將加載數據並將其存儲在該AppDelegate屬性中。

+0

還是一個靜態變量,對這個類是私有的? – trojanfoe

相關問題