0

我正在开发一个具有 TableView 的项目,它在我的服务器上加载 JSON 文件的内容。一切正常,但我有两个问题。

1)当我更改视图并加载不同的视图时,当我回到这个 TableView ... TableView 尝试重新加载内容,没有错误,但进度条短暂出现。如何避免这种情况发生?

2)我的第二个问题是,一旦加载,如果我失去互联网连接并更改视图,内容就会丢失。即使我已经下载了。我将如何缓存这些信息?

这是代码:

@interface ProgramacaoTableViewController ()
{
    // Object thats hold the content
    MProgramacao *_programacao;
}

    - (void)viewDidLoad
{
    [super viewDidLoad];

    // TS MESSAGE
    [TSMessage setDefaultViewController:self];
    [self.navigationController.navigationBar setTranslucent:YES];

    // Add Refresh Control
    UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init];

    [refreshControl addTarget:self action:@selector(refresh) forControlEvents:UIControlEventValueChanged];
    self.refreshControl = refreshControl;

    ////
    // Check Connection and Load Data
    if ([self IsConnected]) {

        // YES INTERNET
        // show loader view
        [ProgressHUD show:@"Loading.."];

        // fetch the feed
        _programacao = [[MProgramacao alloc] initFromURLWithString:@"http://myurl..."
                                                        completion:^(JSONModel *model, JSONModelError *err) {

                                                            //hide the loader view
                                                            [ProgressHUD dismiss];

                                                            //json fetched
                                                            [self.tableView reloadData];

                                                        }];


    }
    else {
        // NO INTERNET
        [TSMessage showNotificationWithTitle:NSLocalizedString(@"Error Message", nil)
                                    subtitle:NSLocalizedString(@"try again", nil)
                                        type:TSMessageNotificationTypeError];

    }

}

我编辑代码。

4

1 回答 1

1

你应该把刚才的数据下载 viewDidLoad下来,然后当用户想要的时候,他可以拉动tableView来刷新。这是正确的方法。

这样,当您按下 a然后回来时,您的tableView遗嘱也会保持加载,并且您的“临时缓存”就是您的数组。viewController_programacao

如果您还想在关闭应用程序的情况下存储数据,您可以使用例如CoreData,但这是另一件事,对于您的目的来说不是必需的。

于 2014-05-25T22:54:33.920 回答