-
카테고리
-
세부 분야
모바일 앱 개발
-
해결 여부
미해결
Thread 1: signal SIGABRT 가 자꾸 뜨네요 천천히 차근차근 했는데...
19.09.09 16:52 작성 조회수 203
2
뷰 컨트롤에서
import UIKit
import WebKit
class ViewController: UIViewController {
// MARK: - Preperties
// MARK: IBOutlets
@IBOutlet var webView: WKWebView!
@IBOutlet var activityIndicator: UIActivityIndicatorView!
// MRAK: - Methods
// MARK: Life Cycle
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
self.webView.navigationDelegate = self
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
let firstPageURL: URL?
if let lastURL: URL = UserDefaults.standard.url(forKey: lastPageURLDefualtkey) {
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: IBAction
@IBAction func goBeck(_ 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: WKWebView, 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: message, preferredStyle: UIAlertController.Style.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()
}
}
앱딜리게이트에서
import UIKit
/// 마지막 페이지 주소를 UserDefaults에서 관리하기 귀한 키 값
let lastPageURLDefualtkey: String = "lastURL"
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
// MARK: - Properties
var window: UIWindow?
var lastPageURL: URL?
// MRAK: - Methods
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
self.lastPageURL = UserDefaults.standard.url(forKey: lastPageURLDefualtkey)
return true
}
func applicationWillResignActive(_ application: UIApplication) {
// 응용 프로그램이 활성 상태에서 비활성 상태로 이동하려고 할 때 전송됩니다. 이는 특정 유형의 일시적인 중단 (예 : 전화 또는 SMS 메시지 수신) 또는 사용자가 응용 프로그램을 종료하고 백그라운드 상태로 전환하기 시작할 때 발생할 수 있습니다.
//이 방법을 사용하여 진행중인 작업을 일시 중지하고 타이머를 비활성화하고 그래픽 렌더링 콜백을 무효화합니다. 게임은이 방법을 사용하여 게임을 일시 중지해야합니다.
let userDefaults: UserDefaults
userDefaults = UserDefaults.standard
userDefaults.set(self.lastPageURL, forKey: lastPageURLDefualtkey)
userDefaults.synchronize()
}
코드를 적었는데요
빌드를 실행하게 되면 앱딜리게이트 첫부분
class AppDelegate: UIResponder, UIApplicationDelegate {Thread 1: signal SIGABRT A가 걸리네요 레이아웃 연결 제대로 연결했는데 스레드 걸리니깐 무엇이 문제인지 모르겠습니다...
답변을 작성해보세요.
답변 0