如何在每次访问时停止视图控制器重新加载数据?

时间:2013-10-09 10:51:44

标签: ios objective-c uitableview uiviewcontroller

我有一个带有数据表的UIViewController以及一个用注释加载数据的地图。

我希望数据仅在用户第一次访问视图时加载,然后只有在通过更新按钮调用方法时才重新加载。目前,视图会重新加载每次访问的数据。我正在调用requestData UITableViewload map方法中的viewDidLoad方法。

我正在使用以下代码将用户发送到视图。也许每次都强制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];

});

}

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

因此,您可以在viewDidLoad中加载数据,然后在NSUserDefaults中创建变量

您在应用加载时设置此项:

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

然后当你在Controller的viewDidLoad中时

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

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

            //Code for load data


        }

答案 1 :(得分:1)

根据我的理解,您似乎将数据存储到View Controller实例中(您说您正在使用viewDidLoad方法加载它)。

您似乎想要的是加载后要缓存的数据。您可以通过多种方式执行此操作,其中最简单的方法是将其存储在全局上下文中,例如AppDelegate实例;在视图控制器中的viewDidLoad方法内,您将测试数据是否已存在且未过期,在这种情况下,您将跳过资源加载并使用它。否则,您将加载数据并将其存储在该AppDelegate属性中。