1

アプリデリゲートのhandleOpenURLメソッドに問題があります。通常表示されるrootviewcontrollerがありますが、アプリでファイルを開くときに、新しいviewcontrollerを表示してURL情報を送信するためにhandleOpenURLメソッドが必要です。問題は、アプリデリゲートからモーダルビューコントローラーを提示できないことです。また、rootviewcontrollerのメソッドを呼び出して、次のモーダルビューコントローラーを表示しようとすると、

 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. セグエの名前を設定し、identifierモーダルに表示されるようにカスタマイズします。
  4. ルート ビュー コントローラーで、 を呼び出します[self performSegueWithIdentifier:@"MySegueIdentifier"];
  5. prepareForSegueルート ビュー コントローラで、URL などの属性を設定します。
于 2012-09-24T07:35:42.503 に答える