处理OpenURL 方法。显示 modalviewcontroller 并传递 url 信息

Posted

技术标签:

【中文标题】处理OpenURL 方法。显示 modalviewcontroller 并传递 url 信息【英文标题】:handleOpenURL method. Present modalviewcontroller and pass url info 【发布时间】:2012-09-24 06:24:47 【问题描述】:

我的应用程序委托中的 handleOpenURL 方法遇到了一些问题。我有一个应该正常显示的 rootviewcontroller,但是当在我的应用程序中打开一个文件时,我需要 handleOpenURL 方法来呈现一个新的 viewcontroller 并发送 url 信息。问题是我无法从我的应用程序委托中呈现模态视图控制器。另外,当我尝试在我的 rootviewcontroller 中调用一个方法来呈现 modalviewcontroller 时,我得到了

 Warning: Attempt to present ... whose view is not in the window hierarchy!

所以,我想我只是在寻找一种解决方案,该解决方案将呈现一个新的模式视图控制器并将 url 信息传递给该类。这是应用委托方法。

- (void)handleOpenURL:(NSURL *)url 


感谢您的帮助

【问题讨论】:

您要创建自定义 URL 方案吗? 【参考方案1】:

在你的 RootViewController 中,创建一个 appDelegate 的实例,就像

 YourAppDelegate *appDelegate = (YourAppDelegate *)[[UIApplication sharedApplication]delegate];
    appDelegate.rootViewControllerInstance = self;

然后是主题

[appDelegate handleOpenURL:yourURL];

还创建一个callBackFunction 例如:

-(void)callBack:(NSUrl *)url;

现在在 appDelegate 类中创建一个 propertyRootViewController

并在appDelegate 中以这种方式指定您的函数..

- (void)handleOpenURL:(NSURL *)url 
[rootViewControllerInstance callBackUrl:url];

【讨论】:

我可以看到应该发生的事情,但我不能让它发挥作用。有人找到更长的例子吗?【参考方案2】:
    在情节提要中,通过添加新的视图控制器并将其类设置为您要呈现的视图控制器来添加要呈现的视图控制器。 Control-从根视图控制器拖动到新控制器,这将创建一个segue。 为 segue 的identifier 设置一个名称,将其自定义为模态显示。 在根视图控制器中,调用[self performSegueWithIdentifier:@"MySegueIdentifier"];。 在根视图控制器的prepareForSegue 中设置任何属性,包括例如一个网址。

【讨论】:

以上是关于处理OpenURL 方法。显示 modalviewcontroller 并传递 url 信息的主要内容,如果未能解决你的问题,请参考以下文章

iOS AppDelegate.m:处理 openUrl RCTLinkingManager 和 Twitter - 方法 'application:openURL:options:' 的重复声明

modalview 关闭后 TableView 未重新加载

呈现的 ModalView 显示在自定义视图中,从中调用它

Dismiss ModalView 在这里不起作用

iOS - 如果应用程序首次启动 - 呈现 ModalView

处理 openURL:使用 Facebook 和 Google