OStack程序员社区-中国程序员成长平台

标题: ios - AppDelegate.m 需要将数据发送到单独的 ViewController 的 WebView [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-12 17:31
标题: ios - AppDelegate.m 需要将数据发送到单独的 ViewController 的 WebView

- (BOOL)applicationUIApplication *)application handleOpenURLNSURL *)url {

     if ([url.scheme isEqualToString"mycustomscheme"]) {

          NSString *urlString = @"http://google.com/";
          NSURL *urlString = [NSURL URLWithString:urlString];
          NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
          [tapView loadRequest:loadObj];

     }
}

“tapView”(一个 UIWebView)在“ViewController.m”中工作得很好,但是当我在“AppDelegate.m”中使用它时它就不起作用了。我需要做些什么才能让这段代码在我的“AppDelegate.m”文件中运行。我会很感激一步一步的解释,因为我是一名网页设计师,而不是程序员,呵呵。

我的代码试图做的是检测在 Safari 中加载的“mycustomscheme://”,当然还要启动应用程序,然后将 google.com 加载到 UIWebView 中(以证明它正在工作)。我不知何故需要连接 tapView 以便它由 AppDelegate.m 操作。



Best Answer-推荐答案


最好让 ViewController 自己加载 Web View ,因此您应该在该 Controller 中创建一个方法来处理该操作(在 ViewController.m 中):

-(void)loadWebViewFromAppDelegate {
     NSString *urlString = @"http://google.com/";
     NSURL *urlString = [NSURL URLWithString:urlString];
     NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
     [tapView loadRequest:loadObj]; // I'm assuming that tapView is a property or outlet in this controller
}

在应用委托(delegate)中,获取对该 Controller 的引用,并调用其方法,

- (BOOL)applicationUIApplication *)application handleOpenURLNSURL *)url {

     if ([url.scheme isEqualToString"mycustomscheme"]) {
         ViewController *vc = (ViewController *)self.window.rootViewController;
         [vc loadWebViewFromAppDelegate];
     }
}

关于ios - AppDelegate.m 需要将数据发送到单独的 ViewController 的 WebView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20795450/






欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) Powered by Discuz! X3.4