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

Ios 目标C:下载后显示隐藏按钮并保留,ios,objective-c,nsurlconnection,nsuserdefaults,nsdata,Ios,Objective C,Nsurlconnection,Nsuserdefaults,Nsdata,我正在尝试制作一个应用程序,使用NSURLConnection通过异步连接从URL下载PDF文件,然后将其本地保存在应用程序上,并使用UIDocumentInteractionController在iBooks上打开它 我已经设法完成了所有的下载、保存和向iBooks打开。 我有10个“下载”按钮(显示)和10个“查看”按钮(隐藏)。 现在,我想做的是在下载后显示“查看”按钮,我已经通过在下载完成后将“查看”按钮的隐藏属性设置为“否”来实现这一点。 它位于此委托下-(void)connectio

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

我已经设法完成了所有的下载、保存和向iBooks打开。 我有10个“下载”按钮(显示)和10个“查看”按钮(隐藏)。 现在,我想做的是在下载后显示“查看”按钮,我已经通过在下载完成后将“查看”按钮的隐藏属性设置为“否”来实现这一点。 它位于此委托下
-(void)connectiondFinishLoading:(NSURLConnection*)connection


但发生的事情是,每当我在后台终止应用程序并重新启动应用程序时,它就会将所有内容恢复到原来的状态。我怎样才能得到我想要的结果呢?我听说过
NSUserDefaults
,但我不知道如何使用它,我在Objective C中是一个非常不在行的人。

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)applicationdFinishLaunching
方法中

特别针对本应用程序

你可以这样做

ViewController *vc = [[ViewController alloc] init...];

if([[NSUserDefaults standardUserDefaults] boolForKey:@"finishedDownloads"] == TRUE)
{
    //show view buttons
    [vc createViewButtons];
} else {
    //show download buttons
    [vc createDownloadButtons];
}

我可以把你提到的第一行代码放在ConnectiondFinish上吗?然后,条件将在appDelegate.m中?我的按钮在我的ViewController文件中以编程方式声明,我将如何在appDelegate中访问它?您可以在ViewController文件中创建两个方法来创建按钮,而不是最初创建按钮然后将其隐藏。您可以创建视图并根据该条件调用相应的方法。您可以声明NSUserDefaults更改,并在
ConnectiondFinishLaunching
中创建
[vc removeDownloadButtons]
方法。removeDownloadButtons方法将删除ViewControlle实例上的任何下载按钮。-1用于不将您的问题简化为真正的问题,即如何将应用程序的一次使用状态保存到下一次使用。无论是保存按钮的状态还是用户最喜欢的颜色,都是无关紧要的。