Iphone 在应用程序中打开,从启动选项获取UIApplicationLaunchOptionsURLKey
我正在尝试在我的应用程序中打开一个.pdf文件。我修改了Info.plist,以便在我的应用程序中打开.pdf 我使用以下代码:Iphone 在应用程序中打开,从启动选项获取UIApplicationLaunchOptionsURLKey,iphone,objective-c,ios,ios4,Iphone,Objective C,Ios,Ios4,我正在尝试在我的应用程序中打开一个.pdf文件。我修改了Info.plist,以便在我的应用程序中打开.pdf 我使用以下代码: - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window.rootViewController = self.viewController; [self.window
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];
thePDFurl = (NSURL *)[launchOptions valueForKey:UIApplicationLaunchOptionsURLKey];
return YES;
}
在另一个类中,我的appDelegate(包含完成了使用选项启动的操作)有一行代码:
appDel = [[UIApplication sharedApplication]delegate];
[theLabel setText:[NSString stringWithFormat:@"%@", appDel.thePDFurl]];
不知何故,标签总是显示(null)。我缺少什么?您可以保留pdfurl变量,也可以使用该方法从NSURL获取绝对字符串值
我可能误解了你的意图。如果是,请忽略
如果您希望用户能够使用您的应用程序“打开…”PDF,您可以实现
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
例如
我很确定这对启动应用程序和调用应用程序都有效(即,如果它已经在后台) 我想你是对的。恰好在方法ApplicationIDFinishLaunching完成之前加载了视图。感谢所有…当您在应用程序中调用时:使用选项完成启动:
self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];
[viewController view]
被隐式调用,并且没有appDel。尚未分配PDF URL
。使用absoluteString
恐怕不起作用。我还将启动更改为thePDFurl=[(NSURL*)[launchOptions-valueForKey:uiapplicationaunchoptionsurlkey]retain]代码>,无效。有什么想法吗?你得用吸气剂。尝试self.pdfurl=(NSURL*)[launchOptions-valueForKey:uiapplicationaunchoptionsurlkey]retain];或者在声明变量的属性时使用retain。如果您使用选项:方法在didFinishLaunchingWithOptions:method中打印它,则DFURL将显示正确的值?我不知道,我无法记录它,因为必须在此应用中打开邮件附件。这意味着我不能通过XCode运行它。我确实做了test=[nsstringwithformat:@“%@”,thePDFurl]
在didFinishLaunchingWithOptions中,尝试了[label setText:appDel.test]
,结果是一个空的(不是(null)
,没有任何内容)标签..?不相关,但使用NSDictionary
的对象forkey:
而不是NSKeyValueCoding
的值forkey:
。嗨,我可以使用“Open with..”,我可以用它打开我的应用程序的PDF。出现的问题是,didFinishLaunching的文件路径在我看来似乎为空。虽然选项是(null)……考虑接受一个提供的答案,而不是发布一个准答案,说未来提供的答案是正确的。事实上,我发现自己的答案可能对其他人有用。在这种情况下,它会提醒用户视图是在方法ApplicationIDFinishLaunching完成之前加载的。如果人们有类似的问题,这可能会有所帮助。尽管如此,作为答案输入到本页面的每一条建议性反馈都被投了赞成票。他们仍然比我自己的答案高。。。
- (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;
}
self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];