后退按钮不适用于我手动加载的外部网站UIWebView

时间:2015-02-23 16:14:02

标签: ios xcode swift

技术:Swift,iOS8.1.3,XCode 6,Maverick

我已经通过main.storyboard向我的UIWebview添加了一个“倒带”后退按钮,并在我的视图中使用backButton func连接它:

class ViewController: UIViewController, UIWebViewDelegate  {
  @IBOutlet weak var webView: UIWebView! 
  var detailItem: NSURL?
  var grabData = false

 override func viewDidLoad() {
    super.viewDidLoad()
    webView.delegate = self
    self.navigationController?.toolbarHidden = false;
 }

 @IBAction func backButton(sender: AnyObject) {
    self.webView.goBack()
  }

 override func viewDidAppear(animated: Bool) {
    super.viewDidAppear(animated)
    if let url = self.detailItem {
        webView.loadRequest(NSURLRequest(URL: url))
    }
}

func webView(webView: UIWebView, shouldStartLoadWithRequest request:  
    NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool {
    if grabData {
        grabData = false
        return true
    } else {
        grabData = true
        manuallyLoadPage(request)
        return false
    }
}

func manuallyLoadPage(request: NSURLRequest) {
    let session = NSURLSession.sharedSession()
    let task = session.dataTaskWithRequest(request) {
    (data, response, error) invar html = NSString(data: data, encoding: NSUTF8StringEncoding) as String
        html = html.stringByReplacingOccurrencesOfString("</head>", withString: "<styles><link rel='stylesheet' type='text/css' href='link-to-styles.css' media='all'></styles></head>", options: NSStringCompareOptions.CaseInsensitiveSearch, range: nil)
        self.webView.loadHTMLString(html, baseURL: response.URL!)
    }
    task.resume()
}

单击时,我的后退按钮不执行任何操作,我希望它显示上一个网页。我认为它与我如何拦截会话和手动加载WebView有关。也许它不知道原来的基本网址是什么?还有别的吗?

0 个答案:

没有答案