2017-09-27 11 views
0

안녕하세요 저는 Swift 3 프로젝트에서 현재 WKWebView를 사용하고 있습니다. 다른 클래스에 하나의 기본 WKWebView를 실행하도록 동일한 WKWebView를 다른 클래스에 유지할 수 있습니까?다른 클래스의 동일한 WKWebView 사용

나는 이것을 WKProcessPool과 WKWebsiteDataStorage와 함께 시도했지만, 다른 클래스에서 새로운 WKWebView를 설정할 때 wkwebview에 기록 된 기존 구성을 참조하는 방법을 모른다.

나는 인터넷을 다 보았지만 해결책을 찾지 못했습니다. 내 문제를 이해하고 해결책을 알기 바랍니다. 미리 감사드립니다 !!

+0

당신이 여기서 무엇을 할 것인지 정확히 모르겠습니다. 여러 개의 클래스에서 동일한 'WKWebView'인스턴스를 하나 사용하려고합니까? 아니면 재사용 할 수있는'WKWebView' 클래스를 매번 새로운 인스턴스로 재사용하려고합니까? – ZGski

답변

2

Stef. 모든 웹보기 인스턴스에 대해 동일한 구성을 사용하려면 정적 속성/메소드를 사용하여 클래스 또는 확장을 만듭니다. 예를 들어 :

extension WKWebViewConfiguration { 
    static var shared : WKWebViewConfiguration { 
     if _sharedConfiguration == nil { 
      _sharedConfiguration = WKWebViewConfiguration() 
      _sharedConfiguration.websiteDataStore = WKWebsiteDataStore.default() 
      _sharedConfiguration.userContentController = WKUserContentController() 
      _sharedConfiguration.preferences.javaScriptEnabled = true 
      _sharedConfiguration.preferences.javaScriptCanOpenWindowsAutomatically = false 
     } 
     return _sharedConfiguration 
    } 
    private static var _sharedConfiguration : WKWebViewConfiguration! 
} 

당신이 웹보기 인스턴스 사이에서만 공유 쿠키를 원하는 경우에, 당신의 WKWebViewConfiguration 인스턴스에 대한 WKWebsiteDataStore.default()에 의해 단일 객체를 사용합니다.

+0

이것은 Eldar에서 효과가있었습니다! 고마워, 인터넷 어디서나 이걸 찾을 수 없었어! 좋은 방법! – Stef