-1

我有一张UIViewController数据表,还有一张用注释加载数据的地图。

我希望仅在用户第一次访问视图时才加载数据,然后仅在他们通过更新按钮调用方法时才重新加载。目前,视图会在每次访问时重新加载数据。我正在调用requestData方法中的方法UITableView和方法。load mapviewDidLoad

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

});

}

谢谢你的帮助。

4

2 回答 2

2

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

您在加载应用程序时进行设置:

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

然后当你在你的控制器的 viewDidLoad

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

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

            //Code for load data


        }
于 2013-10-09T11:01:25.390 回答
1

据我了解,您似乎正在将数据存储到 View Controller 实例中(您说您正在将其加载到viewDidLoad方法中)。

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

于 2013-10-09T11:04:34.447 回答