Как загрузить WKWebview перейти на корневую страницу при нажатии активной панели вкладок? - PullRequest
0 голосов
/ 01 апреля 2019

Я новичок в разработке для iOS с использованием Xcode 10.2 и Swift 5 (последнее обновление). Я разрабатываю приложение для iOS, используя TabBar и WKWebview. Приложение имеет 5 вкладок, каждая из которых отображает свою веб-страницу.

Я хочу сделать так, чтобы пользователь получал доступ к первой вкладке и просматривал ее там, а затем пользователь нажимал на другую панель вкладок, после чего пользователь возвращался к первой вкладке и по-прежнему отображал ту же страницу, прежде чем перейти на другую вкладку. Если пользователь хочет вернуться на корневую страницу вкладки, просто снова нажмите активную панель вкладок.

Как я могу это сделать?

Я использую RootViewController, затем расширяется до 5 других ViewController:
- HomeViewController
- SignalViewController
- ContactViewController
- NewsViewController
- ProfileViewController

Я попробовал несколько предложений со многих сайтов, но не смог, например, используя:
- UITabBarControllerDelegate tabBarController (: didSelect :)
- UIViewController viewDidAppear (
:)
- UIViewController viewWillAppear ( :)
- super.viewDidLoad () или self.viewDidLoad ()
- UIView setNeedsDisplay (
:)
- webview.load ()

// set global variable for checking selected index tab
var prevTab: Int = 0
var currentTab: Int = 0;

class RootViewController: UIViewController, WKUIDelegate, UITabBarControllerDelegate {

    // declare var for WebKit
    var webView: WKWebView!

    // load view of WebKit
    override func loadView() {
        let webConfiguration = WKWebViewConfiguration()
        webView = WKWebView(frame: .zero, configuration: webConfiguration)
        webView.uiDelegate = self
        view = webView
    }

    // for display URL in WebKit
    func goToUrl(url: String){
        let myURL = URL(string:url)
        let myRequest = URLRequest(url: myURL!)
        webView.load(myRequest)
    }
}
class HomeViewController: RootViewController {

    let defaultUrl : String = "https://yourdomain.com/"

    override func viewDidLoad() {
        super.viewDidLoad()

        // for checking click on active tab to root page of tab
        self.tabBarController?.delegate = self

        // call URL to dipslayed on WebKit View
        self.goToUrl(url: defaultUrl)
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    // Tells the delegate that the user selected an item in the tab bar
    func tabBarController(_ tabBarController: UITabBarController, didSelect viewController: UIViewController){

        // get selected index tab
        currentTab = self.tabBarController?.selectedIndex ?? 0

        if(prevTab == currentTab){
            // MUST GO TO DEFAULT URL
        }

        // save selected index tab for next checking
        prevTab = currentTab
    }

}

Я ожидаю, что когда пользователь снова нажмет на панель вкладок ACTIVE (prevTab равен currentTab), тогда WKWebview перейдет к URL-адресу по умолчанию, но не получится (ничего не произошло).

...