2011-06-17 82 views
0

我试图在我的应用程序中打开.pdf文件。我调整了Info.plist,因此可以在我的应用程序中打开.pdf。在应用程序中打开,从launchOptions中获取UIApplicationLaunchOptionsURLKey

我使用下面的代码:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    self.window.rootViewController = self.viewController; 
    [self.window makeKeyAndVisible]; 
    thePDFurl = (NSURL *)[launchOptions valueForKey:UIApplicationLaunchOptionsURLKey]; 
    return YES; 
} 

在其他类,那里有我的appDelegate(包含didFinishLaunchingWithOptions),我已经得到了行:

appDel = [[UIApplication sharedApplication]delegate]; 
[theLabel setText:[NSString stringWithFormat:@"%@", appDel.thePDFurl]]; 

不知怎的,总是theLabel节目(空值)。我错过了什么?

+0

*如果您在* didFinishLaunchingWithOptions:*方法中打印,thePDFurl *会显示正确的值? – EmptyStack 2011-06-17 10:16:21

+0

我不知道,我不能NSLog它,因为邮件的附件必须在这个应用程序中打开。这意味着我无法通过XCode运行它。我做了`test = [NSString stringWithFormat:@“%@”,thePDFurl];`在didFinishLaunchingWithOptions中,尝试了`[theLabel setText:appDel.test]`,结果是一个空的(不是`(null)`, ) 标签..? – Joetjah 2011-06-17 10:23:29

+0

不相关,但使用`NSDictionary`的`objectForKey:`而不是`NSKeyValueCoding`的`valueForKey:`。我害怕,使用`absoluteString`的 – 2011-06-17 10:25:59

回答

0

我想你没事。它恰好是在方法applicationDidFinishLaunching完成之前加载的。感谢所有...

2

您可以保留pdfurl变量,并使用absoluteString方法从NSURL中获取绝对字符串值。

[theLabel setText:[NSString stringWithFormat:@"%@", [appDel.thePDFurl absoluteString]]] 
+0

不起作用。我也将启动更改为`thePDFurl = [(NSURL *)[launchOptions valueForKey:UIApplicationLaunchOptionsURLKey] retain];`,无效。有任何想法吗? – Joetjah 2011-06-17 10:07:01

8

我可能会误解你想要做的事情。如果是这样,请忽略。

如果你希望用户能够使用您的应用程序为PDF“用...打开”,可以实现

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation 

例如

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation 
{ 
    NSLog(@"Open URL:\t%@\n" 
    "From source:\t%@\n" 
    "With annotation:%@", 
    url, sourceApplication, annotation); 

    NSString *filepath = [url path]; 
    //... 
    return YES; 
} 

我敢肯定,这适用于启动应用程序和调用它(即,如果它已经在后台)。

0

当您处于application:didFinishLaunchingWithOptions:打电话,

self.window.rootViewController = self.viewController; 
[self.window makeKeyAndVisible]; 

[viewController view]被隐式调用,也没有appDel.thePDFurl尚未分配。

相关问题