我正在开发一个项目,它有一个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];
}
}
我编辑代码。
答案 0 :(得分:1)
您应该仅在 viewDidLoad
中下载数据,然后当用户想要时,他可以拉取tableView进行刷新。这是正确的方法。
通过这种方式,当您按下tableView
然后返回时,您的viewController
仍会 >;#em>"临时缓存&# 34; 是你的数组_programacao
。
如果您想要在关闭应用程序的情况下存储数据,您可以使用例如CoreData
,但这是您的目的不需要的另一件事。