目标C:下载并保留后显示隐藏按钮

时间:2013-05-29 02:01:53

标签: ios objective-c nsurlconnection nsuserdefaults nsdata

我正在尝试创建一个应用程序,使用NSURLConnection通过异步连接从URL下载PDF文件,然后在应用程序上本地保存,并使用UIDocumentInteractionController

在iBooks上打开它

我已经设法完成所有下载,保存并将其打开到iBooks。 我有10个“下载”按钮(显示)和10个“视图”按钮(隐藏)。 现在我要做的是在下载后显示“查看”按钮,我已经设法通过在下载完成后将“查看”按钮的隐藏属性设置为NO。 它位于此委托- (void)connectionDidFinishLoading:(NSURLConnection *)connection

但是,无论何时我在后台终止应用程序并重新启动应用程序,它都会将所有内容恢复到原始状态。我怎样才能做到我想要的结果呢?我听说过NSUserDefaults,但我不知道如何使用它,我在Objective C中非常棒。

1 个答案:

答案 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];
}