인프런 커뮤니티 질문&답변

박단비님의 프로필 이미지
박단비

작성한 질문수

야곰의 iOS 프로그래밍

코드로 기능 구현하기

혹시 강의하실때 사용하셨던 Xcode 버전을 알 수 있을까요?

작성

·

328

0

모두 똑같이 적었는데 오류가 많이 납니다 ㅠㅠ

저는 10.2.1 사용합니다.

답변 4

0

박단비님의 프로필 이미지
박단비
질문자

어떻게 고쳐야 Run했을때 정상적으로 작동 될까요...?

0

박단비님의 프로필 이미지
박단비
질문자

몇가지는 fix 눌러서 고쳐서 조금 수정되었을거에요.

지금 에러가 8개 납니다 ㅠㅠ

0

박단비님의 프로필 이미지
박단비
질문자

앱딜리게이트

//

//  AppDelegate.swift

//  MyWebBrowser

//

//  Created by 박단비 on 15/05/2019.

//  Copyright © 2019 박단비. All rights reserved.

//

 

import UIKit

/// 마지막 페이지 주소를 UserDefaults에서 관리하기 위한 키 값

let lastPageURLDefaultKey: String = "lastURL"

 

 

@UIApplicationMain

class AppDelegate: UIResponder, UIApplicationDelegate {

    // MARK: - Properties

    var window: UIWindow?

    var lastPageURL: URL?

 

    // MARK: - Methods

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {

        // Override point for customization after application launch.

        self.lastPageURL = UserDefaults.standard.url(forKey: lastPageURLDefaultKey)

        return true

    }

 

    func applicationWillResignActive(_ application: UIApplication) {

        

        let userDefaults: UserDefaults

        userDefaults = UserDefaults.standard

        

        UserDefaults.set(self.lastPageURL, forKey: lastPageURLDefaultKey)

        userDefaults.synchronize()

    }

 

    func applicationDidEnterBackground(_ application: UIApplication) {

        

    }

 

    func applicationWillEnterForeground(_ application: UIApplication) {

        // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background.

    }

 

    func applicationDidBecomeActive(_ application: UIApplication) {

        // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.

    }

 

    func applicationWillTerminate(_ application: UIApplication) {

        // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.

    }

 

 

}

 

0

박단비님의 프로필 이미지
박단비
질문자

뷰 컨트롤러

//

//  ViewController.swift

//  MyWebBrowser

//

//  Created by 박단비 on 15/05/2019.

//  Copyright © 2019 박단비. All rights reserved.

//

 

import UIKit

import WebKit

 

class ViewController: UIViewController {

 

    //MARK: - Properties

    //MARK: IBOutlets

    @IBOutlet var webView: WKWebView!

    @IBOutlet var activityIndicator: UIActivityIndicatorView!

    

    //MARK: - Methods

    //MARK: Life Cycle

    override func viewDidLoad() {

        super.viewDidLoad()

        // Do any additional setup after loading the view.

        self.webView.navigationDelegate = self as? WKNavigationDelegate

    }

    

    override func viewDidAppear(_ animated: Bool) {

        super.viewDidAppear(animated)

        

        let firstPageURL: URL?

        

        if let lastURL: URL = UserDefaults.standard.url(forKey: lastPageURLDefaultKey) {

            firstPageURL = lastURL

        } else {

            firstPageURL = URL(string: "https://www.google.com")

        }

        guard let pageURL: URL = firstPageURL else {

            return

        }

        

        let urlRequest: URLRequest = URLRequest(url: pageURL)

        self.webView.load(urlRequest)

}

 

        // MARK: IBActions

        @IBAction func goBack(_ sender: UIBarButtonItem) {

            self.webView.goBack()

        }

        @IBAction func goForward(_ sender: UIBarButtonItem) {

            self.webView.goForward()

        }

        @IBAction func refresh(_ sender: UIBarButtonItem) {

            self.webView.reload()

 

            //MARK: Custom Methods

            func showNetworkingIndicators() {

                self.activityIndicator.isHidden = false

                self.activityIndicator.startAnimating()

                UIApplication.shared.isNetworkActivityIndicatorVisible = true

                

            func hideNetworkingIndicators() {

                self.activityIndicator.isHidden = true

                self.activityIndicator.stopAnimating()

                UIApplication.shared.isNetworkActivityIndicatorVisible = false

        }

}

        

extension ViewController: WKNavigationDelegate {

    

    // MARK : WKNavigationDelegate

    func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {

        print("did finish navigation")

        

        if let appDelegate: AppDelegate = UIApplication.shared.delegate as? AppDelegate {

            AppDelegate.lastPageURL = webView.url

        }

        

        webView.evaluateJavaScript("document.title") { (value: Any?, error: Error?) in

            if let error: Error = error {

                print(error.localizedDescription)

                return

            }

            

            guard let title: String = value as? String else {

                return

            }

            

            self.navigationItem.title = title

        }

        self.hideNetworkingIndicators()

    }

    func webView(_ webView, didFail navigation: WKNavigation!, withError error: Error) {

        print("did fail navigation")

        print("\(error.localizedDescription)")

        

        self.hideNetworkingIndicators()

        let message: String = "오류발생!\n" + error.localizedDescription

        

        let alert: UIAlertController

        alert = UIAlertController(title: "알림", message, preferredStyle: UIAlertController.alert)

        

        let okayaction: UIAlertAction

        okayaction = UIAlertAction(title: "확인", style: UIAlertAction.Style.cancel, handler: nil)

        

        alert.addAction(okayaction)

        

        self.present(alert, animated: true, completion: nil)

    }

    func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) {

        print("did start navigation")

        self.showNetworkingIndicators()

    }

 

}

 

}

}

박단비님의 프로필 이미지
박단비

작성한 질문수

질문하기