본문 바로가기

학습 노트/iOS (2021)

203. Display Web Contents

Display Web Contents


WebKitView는 Scene에 delegate로 연결한다.

WebContentViewController.swift > viewDidLoad()

   override func viewDidLoad() {
	   super.viewDidLoad()
	   
	   navigationItem.largeTitleDisplayMode = .never
	   webView.navigationDelegate = self
	   urlField.text = "https://www.apple.com"
   }

Scene에 진입하면 애플 홈페이지의 주소로 urlField를 채운다.

WebContentViewController.swift > UITextFieldDelegate

extension WebContentViewController: UITextFieldDelegate {
   func textFieldShouldReturn(_ textField: UITextField) -> Bool {
      guard let str = textField.text else { return true }
      go(to: str)
      textField.resignFirstResponder()
      return true
   }
}

클래스 파일의 delegate에는 textfield의 keyboard에서 return을 누르면
go(to:)를호출해 값을 전달하도록 구현돼있다.

WebContentViewController.swift > go(to:)

   func go(to urlStr: String) {
	   guard let url = URL(string: urlStr) else {
		   fatalError("Invalid URL")
	   }
	   
	   let request = URLRequest(url: url)
	   
	   webView.load(request)
   }

전달된 문자열을 사용해 URL을 생성하고,
URL을 사용해 네트워크 요청을 생성한다.
이때 http 메서드를 설정하거나 header를 변경하는 것도 가능하다.


결과


Scene에 진입하면 지정한 주소가 textField에 입력되고,
textField를 선택하고 return 키를 누르면 애플 홈페이지를 로드한다.

WebContentViewController.swift > goBack(), goForward()

   @IBAction func goBack(_ sender: Any) {
	   if webView.canGoBack {
		   webView.goBack()
	   }
   }
   
   @IBAction func goForward(_ sender: Any) {
	   if webView.canGoForward {
		   webView.goForward()
	   }
   }

webView의 속성을 통해 앞으로 가기, 뒤로 가기가 가능한지 판단한 후,
해당 메서드를 호출한다.


결과


WebContentViewController.swift > reload()

   @IBAction func reload(_ sender: Any) {
	   webView.reload()
   }

결과


 

'학습 노트 > iOS (2021)' 카테고리의 다른 글

205~ 206. JSON  (0) 2022.07.13
204. App Transport Security (ATS)  (0) 2022.07.08
202. Networking  (0) 2022.07.06
201. Migration  (0) 2022.07.06
200. Performance & Debugging  (0) 2022.06.30