1

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

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

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

- (void)handleOpenURL:(NSURL *)url {

}

谢谢你的帮助

4

2 回答 2

5

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

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

然后主题

[appDelegate handleOpenURL:yourURL];

还创建一个 callBackFunction 例如:

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

现在在 appDelegate 类中创建一个property你的RootViewController

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

- (void)handleOpenURL:(NSURL *)url {
[rootViewControllerInstance callBackUrl:url];
}
于 2012-09-24T06:53:22.383 回答
1
  1. 在情节提要中,通过添加一个新的视图控制器并将其类设置为您正在呈现的视图控制器来添加您想要呈现的视图控制器。
  2. 按住 Control 从根视图控制器拖动到新控制器,这将创建一个segue.
  3. 设置identifiersegue 的名称,将其自定义为模态显示。
  4. 在根视图控制器中,调用[self performSegueWithIdentifier:@"MySegueIdentifier"];.
  5. prepareForSegue根视图控制器中设置任何属性,包括例如 URL。
于 2012-09-24T07:35:42.503 回答