在app中打开,从launchOptions获取UIApplicationLaunchOptionsURLKey

时间:2011-06-17 09:53:37

标签: iphone objective-c ios ios4

我正在尝试在我的应用中打开.pdf文件。我修改了Info.plist,以便在我的应用程序中打开.pdf。

我使用以下代码:

- (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总是显示(null)。我错过了什么?

4 个答案:

答案 0 :(得分:8)

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

如果您希望用户能够使用您的应用“打开...”PDF,您可以实施

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

E.g。

- (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;
}

我很确定这适用于启动应用程序并调用它(即它是否已经在后台)。

答案 1 :(得分:2)

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

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

答案 2 :(得分:0)

我猜你没事。在方法applicationDidFinishLaunching完成之前,视图已经加载了。谢谢大家...

答案 3 :(得分:0)

application:didFinishLaunchingWithOptions:内进行通话时,

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

[viewController view]被隐式调用,但尚未分配appDel.thePDFurl