handleOpenURL方法。提出modalviewcontroller并传递url信息

时间:2012-09-24 06:24:47

标签: iphone xcode delegates appdelegate

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

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

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

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

}

感谢您的帮助

2 个答案:

答案 0 :(得分: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];
}

答案 1 :(得分:1)

  1. 在情节提要中,通过添加新的视图控制器并将其类设置为您要呈现的类,添加要显示的视图控制器。
  2. 从根视图控制器控制拖动到新控制器,这将创建segue
  3. 为segue的identifier设置名称,将其自定义为模态显示。
  4. 在根视图控制器中,调用[self performSegueWithIdentifier:@"MySegueIdentifier"];
  5. 在根视图控制器的prepareForSegue中设置任何属性,包括例如一个URL。