从另一个类调用方法,uiwebview和模态视图问题

时间:2012-09-23 19:41:07

标签: iphone xcode webview modalviewcontroller uiapplicationdelegate

我在尝试从另一个类调用方法时遇到了一些问题。这是我的代码

Appdelegate.m

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

if ([url isFileURL]){
       RootViewController *theview = [[RootViewController alloc] init];
       [theview handleOpenURL:url];
       }
       return YES;
  }

RootViewController.h

 @interface RootViewController : UIViewController <UIWebViewDelegate>{
     IBOutlet UIWebView* mainwebView;
  }
- (void)handleOpenURL:(NSURL *)url;
@property (nonatomic, retain) UIWebView* mainWebView;

RootViewController.m

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

NSLog(@"Method handleOpenURL completed")

[mainwebView setDelegate:self];
[self.mainwebView loadRequest:[[NSurLRequest alloc] initWithURL:url];



[self performSelector:@selector(handleIt) withObject:nil afterDelay:3.0];
}

- (void)handleIt{
docView *docController = [[docView alloc] initWithNibName:nil bundle:nil];
[self presentModalViewController:docController animated:YES];
}

所以,基本上我正在尝试更新UIWebView,然后在appdelegate调用handleOpenURL时呈现模态视图控制器。问题是这两件事(更新webview和呈现视图控制器)拒绝在handleOpenURL方法中工作。它们在viewdidload中工作得非常好,这让我觉得它与从appdelegate调用的方法有关。

webview只是在从handleOpenURL方法访问时拒绝响应,当我呈现模态视图控制器时,我得到错误

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

但是,从viewdidload(使用时间延迟选择器)呈现时,modalview再次正常工作

感谢您的帮助,解释为什么会发生这种情况或解决方法会很棒。

1 个答案:

答案 0 :(得分:0)

您必须#import "docView.h"RootViewController.m

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

警告声明视图无法识别,这意味着您无法正确访问该类,如果未导入,则您未正确设置docView.m中的代码。

如果这不起作用,我需要更多信息来帮助您解决问题。


编辑澄清:

  • app-delegate在开始时被调用,当指向时,不是 不断。
  • 你应该从模态视图加载时调用它,一个方法 指针([self myFunctionNameHere];)可以正常工作。
  • 因此,您没有正确访问app-delegate。
  • 我认为你甚至不应该从app-delegate中调用它, 从你的.m。中调用它。

从主(.m)文件中调用它将解决所有问题。