-1

我正在尝试制作一个应用程序,该应用程序使用异步连接从 URL 下载 PDF 文件,NSURLConnection然后将其保存在应用程序本地并使用 iBooks 打开它UIDocumentInteractionController

我已经设法完成所有下载、保存和打开 iBooks 的工作。我有 10 个“下载”按钮(显示)和 10 个“查看”按钮(隐藏)。现在我想做的是在下载后显示“查看”按钮,我已经通过在下载完成后将“查看”按钮的隐藏属性设置为 NO 来做到这一点。在这个代表之下- (void)connectionDidFinishLoading:(NSURLConnection *)connection

但是,每当我在后台终止应用程序并重新启动应用程序时,它都会将所有内容恢复到原始状态。我将如何实现我想要的结果?我听说过,NSUserDefaults但我不知道如何使用它,我是 Objective C 的菜鸟。

4

1 回答 1

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];
}
于 2013-05-29T02:12:35.803 回答