아미(아름다운미소)

'http://' 문자열 자동 삽입 본문

랭귀지/SWIFT

'http://' 문자열 자동 삽입

유키공 2018. 1. 29. 12:30

- 웹 뷰로 간단한 웹 브라우져 만들기 7

프로토콜이 있는지를 검사하고 없을 경우 'http://' 문자열을 자동으로 추가하는 함수를 만들어 보겠습니다.

    func checkUrl(_ url: String) -> String {

        //입력받은 url스트링을 임시 변수 strUrl에 넣습니다.

        var strUrl = url

        //"http://"를 가지고 있는지 확인한 값을 flag에 넣습니다.

        let flag = strUrl.hasPrefix("http://")

        //"http://"를 가지고 있지 않다면, 즉 '!flag'일 때 변수 strUrl에 "http://"를 추가하고 이를 리턴합니다.

        if !flag {

            strUrl = "http://" + strUrl

        }

        return strUrl

    }


    @IBAction func btnGoUrl(_ sender: UIButton) {

        let myUrl = checkUrl(txtUrl.text!)

        txtUrl.text = " "

        loadWebPage(myUrl)

    }


 위치

 checkUrl 함수아래 

 연결(Connection)

 Action

이름(Name)

 btnGoUrl 

유형(Type) 

 UIButton 


import UIKit

class ViewController: UIViewController, UIWebViewDelegate {

    @IBOutlet weak var txtUrl: UITextField!
    @IBOutlet weak var myWebView: UIWebView!
    @IBOutlet weak var myActivityindicator: UIActivityIndicatorView!
    
    func loadWebPage(_ url: String) {
        //상수 myUrl은 url 값을 받아 URL형으로 선언합니다.
        let myUrl = URL(string: url)
        //상수 myRequest는 상수 myUrl을 받아 URLRequest형으로 선언합니다.
        let myRequest = URLRequest(url: myUrl!)
        //UIWebView형의 myWebView 클래스의 loadRequest 메서드를 호출합니다.
        myWebView.loadRequest(myRequest)
    }
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        myWebView.delegate = self
        //앱이 처음 나타나면 접속할 웹 페이지 주소를 추가 합니다.
        loadWebPage("http://www.todaymart.com")
    }
    
    func webViewDidStartLoad(_ webView: UIWebView) {
        myActivityindicator.startAnimating()
    }
    
    func webViewDidFinishLoad(_ webView: UIWebView) {
        myActivityindicator.stopAnimating()
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
    
    func checkUrl(_ url: String) -> String {
        //입력받은 url스트링을 임시 변수 strUrl에 넣습니다.
        var strUrl = url
        //"http://"를 가지고 있는지 확인한 값을 flag에 넣습니다.
        let flag = strUrl.hasPrefix("http://")
        //"http://"를 가지고 있지 않다면, 즉 '!flag'일 때 변수 strUrl에 "http://"를 추가하고 이를 리턴합니다.
        if !flag {
            strUrl = "http://" + strUrl
        }
        return strUrl
    }
    
    @IBAction func btnGoUrl(_ sender: UIButton) {
        let myUrl = checkUrl(txtUrl.text!)
        txtUrl.text = " "
        loadWebPage(myUrl)
    }
    //Site1 버튼 클릭하면 이동하는 페이지
    @IBAction func btnGoSite1(_ sender: UIButton) {
        loadWebPage("http://m.naver.com")
    }
    //Site2 버튼을 클릭하면 이동하는 페이지
    @IBAction func btnGoSite2(_ sender: UIButton) {
        loadWebPage("http://m.daum.net")
    }
    
    @IBAction func btnLoadHtmlString(_ sender: UIButton) {
        //html 문을 변수에 저장합니다.
        let htmlString = "

Html String

String 변수를 이용한 웹 페이지
아미(아름다운미소)로 이동" //loadHTML String 함수를 이용하여변수에 저장된 HTML문을 웹 부에 표시합니다. myWebView.loadHTMLString(htmlString, baseURL: nil) } @IBAction func btnLoadHtmlFile(_ sender: UIButton) { //Bundle에서 main으로 변수를 생성 합니다. let myHtmlBundle = Bundle.main //path 함수를 호출합니다. let filepath = myHtmlBundle.path(forResource: "htmlView", ofType: "html") //html 파일을 로딩합니다. loadWebPage(filepath!) } @IBAction func btnStop(_ sender: UIBarButtonItem) { //웹 페이지의 로딩을 중지시키는 함수를 호출합니다. myWebView.stopLoading() } @IBAction func btnReload(_ sender: UIBarButtonItem) { //웹 페이지를 재로딩시키는 함수를 호출합니다. myWebView.reload() } @IBAction func btnGoBack(_ sender: UIBarButtonItem) { //이전 웹 페이지로 이동시키는 함수를 호출합니다. myWebView.goBack() } @IBAction func btnGoForward(_ sender: UIBarButtonItem) { //다음 웹 페이지로 이동시키는 함수를 호출합니다. myWebView.goForward() } }

[결과화면]

주소창에 http:// 없이 www.todaymart.com을 입력 후 [Go] 버튼을 클릭해도 웹 뷰가 해당 주소로 이동하는 것을 확인할 수 있습니다.





Comments