我正在尝试创建一个应用程序,使用NSURLConnection
通过异步连接从URL下载PDF文件,然后在应用程序上本地保存,并使用UIDocumentInteractionController
我已经设法完成所有下载,保存并将其打开到iBooks。
我有10个“下载”按钮(显示)和10个“视图”按钮(隐藏)。
现在我要做的是在下载后显示“查看”按钮,我已经设法通过在下载完成后将“查看”按钮的隐藏属性设置为NO。
它位于此委托- (void)connectionDidFinishLoading:(NSURLConnection *)connection
但是,无论何时我在后台终止应用程序并重新启动应用程序,它都会将所有内容恢复到原始状态。我怎样才能做到我想要的结果呢?我听说过NSUserDefaults
,但我不知道如何使用它,我在Objective C中非常棒。
答案 0 :(得分:0)
NSUserDefaults是一个简单的静态字典,您可以在整个应用程序中访问它。在下载完成后,您需要在appDelegate中设置一个键:
[[NSUserDefaults standardUserDefaults] setBool:TRUE forKey:@"finishedDownloads"];
然后,您可以使用该值来确定在启动应用程序时如何处理这些按钮:
if([[NSUserDefaults standardUserDefaults] boolForKey:@"finishedDownloads"] == TRUE)
{
//show view buttons
} else {
//show download buttons
}
在执行该检查之前,您需要查看NSUserDefaults中是否存在该密钥:
if(![[NSUserDefaults standardUserDefaults] boolForKey:@"finishedDownloads"])
[[NSUserDefaults standardUserDefaults] setBool:FALSE forKey:@"finishedDownloads"];
这将确保在检查其值之前存在一个键集。您可以将此行添加到- (void)applicationDidFinishLaunching
方法中。
具体参考此应用程序
你可以做这样的事情
ViewController *vc = [[ViewController alloc] init...];
if([[NSUserDefaults standardUserDefaults] boolForKey:@"finishedDownloads"] == TRUE)
{
//show view buttons
[vc createViewButtons];
} else {
//show download buttons
[vc createDownloadButtons];
}