24일차 - 21.07.01

수킴·2021년 7월 1일
0

100DaysOfSwift

목록 보기
25/37
post-thumbnail

학습키워드

  • WKWebView
  • WKNavigationDelegate
  • action sheets

1. Setting up

개요

Project4는 간단한 웹 브라우저 앱을 작성합니다.

Xcode프로젝트 → iOS APP템플릿 사용

2. Creating a simple browser with WKWebView

이 프로젝트에서는 웹뷰가 전체 공간을 차지하므로 뷰컨트롤러의 뷰가 될 수도 있습니다.

웹뷰를 작성하는 방법 중 하나인 WebKit 프레임워크의 일부인 WKWebView 를 사용

메인뷰를 웹뷰로 지정하기 떄문에 loadView 에 작성합니다.

loadView와 viewDidLoad차이

  • loadView : View를 로드할 경우에 사용

    뷰 컨트롤러가 자신의 뷰, 그러니까 흔히 self.view처럼 접근하는 그 뷰 컨트롤러의 메인 뷰를 로드할 때 호출되는 메서드

    즉, 그 메인뷰를 생성하려고 호출하는 메서드죠. 그래서 이 메서드 안에서 새로운 뷰를 만들어서 반환해줘도 됩니다.

    스토리보드를 쓰면 어차피 스토리보드에 있는 뷰를 가져와 쓸테니 굳이 필요하지 않다고 볼 수 있겠네요.

  • viewDidLoad : awakeFromNib나 loadView가 호출된 이후에 호출 (뷰가 로드가 된 후)

    이 뷰가 모두 생성되고 메모리에 생성된 후에 호출되는 메서드입니다. 즉, 뷰컨트롤러의 메인뷰가 생성 되었으니 이제 이 위에 하고픈걸 해라

  • https://mrgamza.tistory.com/279

  • https://yagom.net/forums/topic/loadview와-viewdidload-차이에-대한-질문입니다/

  • https://medium.com/yay-its-erica/viewdidload-vs-loadview-swift3-47f4ad195602

WKNavigationDelegate

웹뷰에 URL 연결

let url = URL(string: "https://www.hackingwithswift.com")!
webView.load(URLRequest(url: url))
webView.allowsBackForwardNavigationGestures = true
  • https : // 포함 : 프로세스가 작동하려면 URL이 완전하고 유효해야합니다.
  • allowsBackForwardNavigationGestures : 스와이프 제스처로 웹탐색에서 앞뒤로이동할 수 있는 속성의 활성여부를 정합니다.

3. Choosing a website: UIAlertController action sheets

바로가기 버튼구현 (URL바로 이동)

@objc func openTapped() {
    let ac = UIAlertController(title: "Open page…", message: nil, preferredStyle: .actionSheet)
    ac.addAction(UIAlertAction(title: "apple.com", style: .default, handler: openPage))
    ac.addAction(UIAlertAction(title: "hackingwithswift.com", style: .default, handler: openPage))
    ac.addAction(UIAlertAction(title: "Cancel", style: .cancel))
    present(ac, animated: true)
}
  • 액션시트에서 하나의 버튼을 클릭했을 때 String값을 넘겨주어서 웹뷰에 로드

웹페이지가 로딩을 완료했을 때 사용하는 WKNavigationDelegate 델리게이트 메서드

func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
    title = webView.title
}
  • webView : The web view that loaded the content
  • navigation : The navigation object that finished

링크

100 Days of Swift - Day 24 - Hacking with Swift

profile
iOS 공부 중 🧑🏻‍💻

0개의 댓글