要するに、私はWKWebViews(WebKit)を備えたSwift iOSアプリで典型的なブラウザ機能を構築しようとしています。私はすでにURL入力、ナビゲーションボタン、共有ボタン、ページタイトルなどを持つメニューバーを持つWKWebViewに基づいて機能するブラウザを既に持っています。Swiftのタブ付きiOS WebKitブラウザ
私が苦労しているのは、ブラウザのタブを作成することです。最初は、WKWebViewsが何らかの形でこれをサポートすることは確かに些細なようでした。さて、私は彼らがそうでないと言うことができる限り(見て、ハッキングwithswift、レイWenderlichなどを見て、複数のチュートリアルを試した+私はAppleのドキュメント+ stackoverflowをチェックした)
これは私がこれまで出てきたものです:
1)新しいタブを作成する/新しいURLを開くと、プログラムで新しいUIView + WKWebViewを作成する必要があります(現在のブラウザビューからサブクラスを作成する必要があります) =>これは、各WKWebView /タブアップルのドキュメントによると
2)すでに開いているタブのスクリーンショットイメージをプレビューpとして保存するには、コレクションビュー(またはスタックビューなど)が必要ですすべてのタブの年齢。セルはデリゲートを介して対応するWkWebViewにリンクされ、タブを閉じる(=削除する)閉じるボタンが必要です。
私はこれを考えすぎていますか?私がこの道を辿ると、複数のデリゲートとビューをコレクションビューに動的に結びつける方法を見つけなければならず、ユーザがタブとやりとりするたびにスクリーンショットを削除する必要があります。非常に乱雑に思えます。しかし、iOS上のChromeが遅くにWebKitに基づいていることを考えると、明らかに実行可能です。
この問題にどのように対処しますか?
PS iOSのChrome、Safariなどのタブの外観がわかっているので、モックアップは含まれていませんでした。
編集:私はちょうど新しいタブを開くことによって作成された複数のWKWebViews、追加/削除して表示するため、クリーンで賢明な方法を探しています - ちょうどChromeのようになどのiOSやSafari
新しいウィンドウやタブが作成されると、WKWebviewは自動的に次を呼び出します。https://developer.apple.com/library/ios/documentation/WebKit/Reference/WKWebView_Ref/#//apple_ref/occ/instm/WKWebView/initWithFrame:configuration: – Brandon
@Brandonはい、それは私が新しいスレッドで意味したものです:)各WKWebViewは別々のスレッドを持っています(私の問題は新しいWKWebViewsを作成するときに複数のビューを管理しています) UI(タブ)とコード(デリゲートなど)の両方で使用できます。つまり、ビューを作成してプレビューページにバインドする最もクリーンな方法は、タブを表示します。 – tech4242