【问题标题】:How do I add a UIWebView to my iOS app?如何将 UIWebView 添加到我的 iOS 应用程序?
【发布时间】:2011-07-21 11:50:12
【问题描述】:

我现在有一个应用程序,当在第一个屏幕上按下按钮时会做一些工作并创建一个 URL,然后

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:currentURL]];

使用我的 URL 启动 Safari。相反,我希望从这里启动 webview,以便用户可以用它做一些自定义的事情。我仍然很难理解 iOS 中的 MVC 并且需要帮助。我的项目很小,由一个 AppDelegate.h/m 和一个 ViewController.h/m 组成,视图控制器的.m 是执行此 Safari 启动的函数所在的位置。

谁能帮我理解如何做我想做的事?

谢谢...

【问题讨论】:

    标签: objective-c webview ios


    【解决方案1】:

    最简单的方法就是在按钮被按下时添加一个 UIWebView。将此方法添加到您的 ViewController.m 并在按下按钮时执行此方法。

    以编程方式:

    //This method should get called when you want to add and load the web view
    - (void)loadUIWebView
    {
        UIWebView *webView = [[UIWebView alloc] initWithFrame:self.view.bounds];  //Change self.view.bounds to a smaller CGRect if you don't want it to take up the whole screen
        [webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:currentURL]]];
        [self.view addSubview:webView];
        [webView release];
    }
    

    使用界面生成器:

    1) 将 UIWebView 对象添加到您的界面。

    2) 将“隐藏”属性设置为选中(在 Interface Builder 的“属性检查器”窗口中)。在您想显示它之前,您会一直隐藏它。

    3) 将以下代码添加到您的 ViewController.h 中,在其他 @property 行下方:

    @property (nonatomic, retain) IBOutlet UIWebView *webView;
    

    4) 在 ViewController.m 中的 @synthesize 下方添加以下行

    @synthesize webView;
    

    并在dealloc方法中添加[webView release];

    5) 回到 IB 并点击 File's Owner,然后将 webView outlet 连接到您创建的 webView。

    6) 添加以下方法而不是我上面显示的方法(对于程序示例):

    //This method should get called when you want to add and load the web view
    - (void)loadUIWebView
    {
        [self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:currentURL]]];
        self.webView.hidden = NO; 
    }
    

    你可以设置一个 IBAction 方法来响应按钮按下,但听起来你已经让按钮按下工作了,所以我现在不会打扰。

    至于在 Web 视图上方添加一个按钮,您可以子类化 Web 视图并在其中添加该按钮,或者只在您的 nib 中定义一个单独的按钮或以编程方式隐藏 webView 以“摆脱它”。

    【讨论】:

    • 我不知道如何回答您的 IB 问题……我有一个。我不知道我是在使用它还是什么。而且我目前有我的函数连接到 ViewController.m 中的按钮,我不能给它 self.bounds,它说它在我的类型的对象上找不到,我也不能执行 self addSubView 调用类似的原因...
    • 谢谢。这绝对有效。 2个问题-如果我想在启动链接之前对 WebView 进行一些设置,我认为这可以吗?例如,如果我想要某种方式使它像 Twitter 的风格,我点击一个链接,在顶部有一个返回按钮,但其余的只是一个 webview?其次,一位朋友说他“建议我切换到 IB 和属性”……知道这意味着什么或我该怎么做吗?感谢您的帮助
    • 我为您的问题添加了答案。我会通过一个教程来复习一下 IB,一旦你掌握了它就很简单,但是有一点学习曲线。
    • 哇,你太棒了,我很感激。我需要这样的例子,我认为苹果的“例子”很差。至于我想要的按钮,我计划(希望)有一个链接的表格视图,每个链接最终都会使用加载的 URL 启动 webview,我希望顶部有一个按钮可以返回表格视图和其他功能希望(比如在 facebook 上发布这个链接或其他东西......)
    • @Ned +1 以获得非常彻底的答案。 @cdietschrun 如果 Ned 回答了您的问题,请不要忘记接受它。
    【解决方案2】:

    要使用 Swift 将 UIWebView 添加到您的应用程序,只需将 WebView 拖到您的故事板,然后使用助手编辑器将 WebView 连接到 ViewController.swift 然后将 URL 加载到 WebView 非常容易。只需在情节提要中创建一个 WebView,然后您就可以使用以下代码加载 url。

        let url = NSURL (string: "https://www.simplifiedios.net");
        let request = NSURLRequest(URL: url!);
        webView.loadRequest(request);
    

    就这么简单,只有3行代码:)

    参考:UIWebView Example

    【讨论】:

      【解决方案3】:

      由于这是 Google 上的最高搜索结果,如果您可以使用 WKWebView 代替 UIWebView,您应该这样做。

      import WebKit
      
      let webViewConfiguration = WKWebViewConfiguration()
      let webView = WKWebView(frame: CGRect(), configuration: webViewConfiguration)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-06-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-02
        • 2013-02-16
        相关资源
        最近更新 更多