如何编写Web视图控制器

时间:2016-07-14 09:00:05

标签: ios swift

我想创建一个webview控制器和我正在做的事情,我只是制作一个像这样的webview控制器超类:

```

class YQTWebViewController: BaseViewController {
    var webview = WKWebView()
    var urlString: String?
    var activityIndicator: UIActivityIndicatorView!

override func viewDidLoad() {
    super.viewDidLoad()
    webview.allowsBackForwardNavigationGestures = true
    webview.navigationDelegate = self
    view.addSubview(webview)
    activityIndicator = UIActivityIndicatorView(activityIndicatorStyle: .Gray)
    // 30 by 30
    let x = UIScreen.mainScreen().bounds.size.width / 2 - 20
    let y = UIScreen.mainScreen().bounds.size.width / 2 - 20
    activityIndicator.frame = CGRectMake(x, y, 40, 40)
    view.addSubview(activityIndicator)

     guard urlString != nil else {
        return
     }
    let url = NSURL(string: urlString!)
    let request = NSURLRequest(URL: url!)
    webview.loadRequest(request)

}

```

我只想创建YQTWebViewcontroller的子类,并在完成初始化视图控制器时覆盖urlString,但我不知道我应该在哪里放置代码。任何人都可以给我一些建议吗?提前致谢。

2 个答案:

答案 0 :(得分:0)

为什么不创建像loadUrlInWebview这样的选择器方法:将urlString作为参数并将加载的Url代码放在此选择器主体中。因此,您的加载URL正文代码应从ViewDidLoad方法中删除并传递到此选择器。从子类中调用此方法,将urlString作为参数传递。

所以把这段代码:

    func loadUrlInWebview(urlString: String!) {
    guard urlString != nil else {
    return
    }
    let url = NSURL(string: urlString!)
    let request = NSURLRequest(URL: url!)
    webview.loadRequest(request)        
     }

从子类方法调用此方法,将URL作为参数传递。

答案 1 :(得分:0)

import WebKit
class YQTWebViewController: UIViewController {
    var webview = WKWebView()
    var urlString: String?
    var activityIndicator: UIActivityIndicatorView!

    override func viewDidLoad() {
        super.viewDidLoad()
        webview.allowsBackForwardNavigationGestures = true
        //webview.navigationDelegate = self
        view.addSubview(webview)
        activityIndicator = UIActivityIndicatorView(activityIndicatorStyle: .Gray)
        // 30 by 30
        let x = UIScreen.mainScreen().bounds.size.width / 2 - 20
        let y = UIScreen.mainScreen().bounds.size.width / 2 - 20
        activityIndicator.frame = CGRectMake(x, y, 40, 40)
        view.addSubview(activityIndicator)

        guard urlString != nil else {
            return
        }
        let url = NSURL(string: urlString!)
        let request = NSURLRequest(URL: url!)
        webview.loadRequest(request)
    }

    class SubViewController : YQTWebViewController{


        override var urlString: String? {
            get {
                return self.urlString
            }
            set {
                self.urlString = newValue
            }
        }
        override func viewDidLoad() {
            super.viewDidLoad()
            urlString = "YOUR URL STRING"
        }
    }