2013-05-29 51 views
-1

我试图让从URL使用NSURLConnection那么它保存在本地的应用程序,并使用UIDocumentInteractionController目标C:显示隐藏按钮,下载后,并保持它

打开它的iBooks下载PDF文件异步连接的应用程序

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

下,但是,什么情况是,每当我终止应用程序在后台并重新启动它的一切恢复到原来的应用程序。我将如何能够做到我想要提出的结果?我听说过NSUserDefaults,但我不知道如何使用它,我在Objective C中是个小菜鸟。

+0

-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]; 
} 
+0

我可以把你提到的第一行代码放在connectionDidFinish上吗?那么条件将在appDelegate.m? –

+0

我的按钮在我的ViewController文件中以编程方式声明,我将如何在AppDelegate中访问它? –

+0

您可以在ViewController文件中创建两个方法来创建按钮,而不是先创建它们,然后隐藏它们。您可以创建视图并根据该条件调用适当的方法。 – jfuellert