-1

データのテーブルと、UIViewController注釈付きのデータをロードするマップがあります。

ユーザーが最初にビューにアクセスしたときにのみデータをロードし、更新ボタンを介してメソッドを呼び出した場合にのみリロードしたいと思います。現時点では、ビューは訪問ごとにデータをリロードします。メソッド内にあるメソッドと メソッドrequestDataに対して を呼び出しています。UITableViewload 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

したがって、データをviewDidLoada にロードしてから、変数を作成できます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 に答える