2010-01-23 84 views
1

我工作的一个处理在应用中自定义URL方案,我试图理清:UIApplication的handleOpenURL在哪里返回?

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url 

我传球,成功解析URL到一个NSDictionary在我的应用程序,但不知道“现在什么?” handleOpenURL返回一个BOOL,但是什么?我很难调试,因为我没有弄清楚如何在设备启动时运行调试器。

我所知道的是applicationDidFinishLaunchinghandleOpenURL之前完成,看起来好像我的rootViewController在屏幕上。

- (void)applicationDidFinishLaunching:(UIApplication *)application { 
    // Load data 
    [self initializeData]; 
    // Configure and show the window 
    [window addSubview:[navigationController view]];  
    [window makeKeyAndVisible]; 
} 

无论如何,所以,现在我有我的appDelegate此的NSDictionary对象,你会如何将其传递到RootViewController的,因此它可以在它的详细视图用它做什么?我会打电话

[[navigationController topViewController] addItemWithDictionary:theDictionary]; 

前handleOpenURL的return YES;或者,我应该在我的appDelegate然后后创建一个NSDictionary属性“YES回报;”检索它从我的rootViewController(或detailViewController - 还没有计算出来)。如果是这样的触发器?我不清楚handleOpenUrl的回报在哪里,以及他们对我有什么价值(如果有的话)。

谢谢!

回答

0

我想我可能已经回答了我自己的问题,但如果您有其他想法,我很乐意听到他们!

我想我需要继续在handleOpenURL中处理,然后将字典转换为一个对象,然后将其添加到我的appDelegate数组中,该对象正在使用rootViewController构建它的表视图。在自动填充数组之前,显然需要在用户的部分上确定一些验证&。我想这也会发生在handleOpenURL的限制内?

1

在建议看看这里大约didFinishLaunchingWithOptions

http://www.iphonedevsdk.com/forum/iphone-sdk-development/31742-handleopenurl-not-called.html

有一对夫妇的我用了传递数据的方法,并根据条件我混合起来。

  1. 保持一个全球性的,所以你不必担心通过。

  2. 使用具有Notification对象的Observer模式使用通知消息中心注册/发布数据。

  3. 保存到NSUserDefaults(也是一个字典,但你不必管理它)的URL。

最近我不得不做一些类似的UIWebView和处理过滤一些URL数据。我必须在NSURL上继承WebViewCache和setSharedCache。我强烈怀疑这将适用于您的问题以及通过使用shouldStartLoadWithRequest检索数据。

+0

非常有帮助,谢谢!但我仍在寻找谁(或什么)正在调用'handleOpenURL'的答案,以及YES或NO的返回值对该调用对象有什么区别?似乎没有任何区别,从我的应用程序的角度来看... – Meltemi 2010-01-26 19:36:14

1

从其他应用程序或移动Safari(非越狱设备)调试openurl的一个方便的提示是继承UIApplication并覆盖一些未记录的方法,对不起,我不记得名字,但你可以在ericasadun.com挖掘它们,名字会相当明显。

当您通过xcode启动应用程序并击中主页时,跳板不会终止进程,因为它是由xcode(afaik)启动的,因此您可以启动其他应用程序并在仍连接到调试器时调用openurl。

相关问题