Swift 3 WebView

alors je viens de mettre à jour à la nouvelle Xcode8 et

UIWebView.loadRequest(webView)(NSURLRequest(URL: NSURL(string: "http://hardwirestudios.com")!))

Maintenant, donne-moi ces deux erreur:

'NSURL' n'est pas implicitement convertible en 'URL'; avez-vous l'intention d'utiliser' as ' pour convertir explicitement?- 'NSURLRequest' n'est pas implicitement convertible en 'URLRequest'; avez-vous l'intention d'utiliser 'as' pour convertir explicitement?

25
demandé sur Shobhakar Tiwari 2016-09-25 03:44:06
la source

4 ответов

Pour cette situation exacte, retapez votre ligne à:

yourWebView.loadRequest(URLRequest(url: URL(string: "http://hardwirestudios.com")!))

... et renommer yourWebView variable à un, que vous utilisez réellement.

dans Swift 3.0, utilisez URL et URLRequest comme presque tous les NS ont été abandonnées.

36
répondu pedrouan 2017-01-03 05:52:33
la source

WebView samples:

À L'Aide De StoryBoard

ViewController.swift

import UIKit

class ViewController: UIViewController, UIWebViewDelegate {

    @IBOutlet weak var webView: UIWebView!
    override func viewDidLoad() {
        super.viewDidLoad()
        webView.delegate = self
        if let url = URL(string: "http://apple.com") {
            let request = URLRequest(url: url)
            webView.loadRequest(request)
        }
    }
}

Main.storyboard

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="11201" systemVersion="15G1004" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="BYZ-38-t0r">
<dependencies>
    <deployment identifier="iOS"/>
    <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="11161"/>
    <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<scenes>
    <!--View Controller-->
    <scene sceneID="tne-QT-ifu">
        <objects>
            <viewController id="BYZ-38-t0r" customClass="ViewController" customModule="stackoverflow_39682344" customModuleProvider="target" sceneMemberID="viewController">
                <layoutGuides>
                    <viewControllerLayoutGuide type="top" id="y3c-jy-aDJ"/>
                    <viewControllerLayoutGuide type="bottom" id="wfy-db-euE"/>
                </layoutGuides>
                <view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
                    <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
                    <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                    <subviews>
                        <webView contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="xr8-sF-fyd">
                            <color key="backgroundColor" red="0.36078431370000003" green="0.38823529410000002" blue="0.4039215686" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                        </webView>
                    </subviews>
                    <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                    <constraints>
                        <constraint firstItem="xr8-sF-fyd" firstAttribute="bottom" secondItem="wfy-db-euE" secondAttribute="top" id="A3n-Xx-65O"/>
                        <constraint firstAttribute="trailing" secondItem="xr8-sF-fyd" secondAttribute="trailing" id="OZa-E2-XIe"/>
                        <constraint firstItem="xr8-sF-fyd" firstAttribute="top" secondItem="y3c-jy-aDJ" secondAttribute="bottom" id="Tn3-gw-V4p"/>
                        <constraint firstItem="xr8-sF-fyd" firstAttribute="leading" secondItem="8bC-Xf-vdC" secondAttribute="leading" id="tYl-t1-QdU"/>
                    </constraints>
                </view>
                <connections>
                    <outlet property="webView" destination="xr8-sF-fyd" id="s1G-80-juD"/>
                </connections>
            </viewController>
            <placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
        </objects>
        <point key="canvasLocation" x="136.80000000000001" y="137.18140929535232"/>
    </scene>
</scenes>
</document>

Résultat

enter image description here

par programmation

import UIKit

class ViewController: UIViewController, UIWebViewDelegate {

    var webView: UIWebView!
    override func viewDidLoad() {
        super.viewDidLoad()
        webView = UIWebView(frame: UIScreen.main.bounds)
        webView.delegate = self
        view.addSubview(webView)
        if let url = URL(string: "http://apple.com") {
            let request = URLRequest(url: url)
            webView.loadRequest(request)
        }
    }
}

Autres

Échantillon De WKWebView

24
répondu Vasily Bodnarchuk 2017-05-23 15:26:27
la source

class WebView: UIViewController {

@IBOutlet var myWebView: UIWebView!

var urlValue = ""

override func viewDidLoad() {
    super.viewDidLoad()
    if let url = URL (string: urlValue){
        let requestObj = URLRequest(url: url)
        _ = myWebView.loadRequest(requestObj)
    }
}

}

4
répondu Komal Gupta 2016-09-27 10:56:55
la source

une classe WebView dynamique avec chargement:

class WebViewController : UIViewController, UIWebViewDelegate {

var url : String!
var webView : UIWebView!
var loadingView : UIActivityIndicatorView!

override func viewDidLoad() {


    let x = Int(UIScreen.main.bounds.width / 2 - 25)
    loadingView = UIActivityIndicatorView(frame : CGRect(x: x, y: 100, width: 50, height: 50))
    loadingView.activityIndicatorViewStyle = .gray

    webView = UIWebView(frame: UIScreen.main.bounds)
    webView.delegate = self
    view.addSubview(webView)
    if let url = URL(string: url) {
        let request = URLRequest(url: url)
        webView.loadRequest(request)
    }else{

        self.navigationController?.popViewController(animated: true)
    }

    view.addSubview(loadingView)
    loadingView.startAnimating()
}

func webViewDidFinishLoad(_ webView: UIWebView) {

    loadingView.removeFromSuperview()
}

static func initController() -> WebViewController {

    let vc = WebViewController()
    return vc
}   
}

///// emploi

 let webvc = WebViewController.initController()
 webvc.url = "http://apple.com"
 self.navigationController?.pushViewController(webvc, animated: true)
2
répondu Ashkan Ghodrat 2018-05-26 10:47:53
la source

Autres questions sur