webView中的url链接调用ViewController原生导航条

viewController.png

一、需求:
ViewController中的某一部位嵌入一小方块WebView,
比如WebView为广告图九宫格,点击某一个广告图要跳转到app中的相应某一个ViewController

二、惊喜

1、花了大半天查了很多资料,然后把思路带偏了
2、一直以为要动用javascript
3、不用和javascript交互 不用和javascript交互 不用和javascript交互
4、不用特意 不用特意 不用特意 去获得图片的链接

三、原理:总共有二个关键点

关键点一 return false :
表示网页内的点击不响应,否则会在webview里面点击前进
关键点二 return true : 原生控件响应且加载webView

所有代码在此

//
//  ViewController.swift
//  WebViewDemo
//
//  Created by apiapia on 9/7/17.
//  Copyright © 2017 WWW.ELINKNET.CN. All rights reserved.
//

import UIKit

class ViewController: UIViewController,UIWebViewDelegate{

    let urlString = "https://api.xxxxyyyzzz.com/index.php?r=app/v1/site/get-home-m1"
    
       lazy var webView:UIWebView = {
        let webView = UIWebView.init()
        webView.frame = CGRect(x: 0, y: 0, width: UIScreen.main.bounds.size.width, height: UIScreen.main.bounds.size.height)
        let url = URL(string: self.urlString)
        webView.loadRequest(URLRequest(url: url!))
        webView.delegate = self
        return webView
    }()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        automaticallyAdjustsScrollViewInsets = true
        
    }

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        view.addSubview(webView)
    }
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        
    }
}

extension ViewController {
    
    func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool {
        
                let nextVC = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "NextViewController") as! NextViewController
                // nextVC.urlLabel.text = request.url?.absoluteString
                if (request.url?.absoluteString.hasPrefix("https://api.xxxxyyyzzz.com/"))! {
                    navigationController?.pushViewController(nextVC, animated: true)
                   //MARK: - 关键点一: 表示网页内的点击不响应,否则会在webview里面点击前进
                    return false
                }
        //MARK: - 关键点二: 原生控件响应且加载webView
        return true
    }
}

就这么简单 easy!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,067评论 25 709
  • Tips 由于WebView的用法实在太多,如果您只是想查询某个功能的使用——建议Ctrl+F(Commad+F)...
    BugDev阅读 12,318评论 11 109
  • WebView·开车指南 2016-08-31BugDev 北京市东城区首席Bug布道师开山之作,一整月交通事故血...
    53c021c38a1d阅读 4,328评论 0 1
  • WebView·开车指南 目录 WebView简介 WebView基本使用 WebView常用方法 WebSett...
    小庄bb阅读 8,889评论 3 25
  • mmcc77阅读 1,207评论 0 0

友情链接更多精彩内容