Открыть URL в определенной вкладке - PullRequest
0 голосов
/ 15 ноября 2018

Я реализую «приложение Tabbet», и мне нужна «Tab» для открытия URL в Safari (новое окно не в том же контроллере представления)

В настоящее время, например, в контроллере представления Tab4 (Tab4ViewControllerView.swif) Я добавил следующий код:

  guard let url = URL(string: "https://google.com") else {
        return //be safe
    }

    if #available(iOS 10.0, *) {
        UIApplication.shared.open(url, options: [:], completionHandler: nil)
    } else {

        UIApplication.shared.openURL(url)
    }

Он работает, но когда я возвращаюсь из Safari в приложение, выбирается Tab4 и, поскольку он ничего не содержит, он выглядит белым.

Мне нужно нажать на Tab4, чтобы открыть Safari, но он не должен быть выбран (вы должны продолжать выбирать предыдущую вкладку.)

В примере с изображением: я в настоящее время нахожусь в Tab1, и нажатие Tab4 должно открыть Safari, носохраняя выбранный Tab1

sample

Ответы [ 2 ]

0 голосов
/ 15 ноября 2018

Добавьте к своему расширению UITabBarController с помощью UITabBarControllerDelegate, также установите для своего идентификатора восстановления Tab 4

restoration id for tab

TabBarController

в TabBarViewContoller добавить:

import UIKit

class TabBarViewController: UITabBarController {

    override func viewDidLoad() {
        super.viewDidLoad()
        delegate = self
        // Do any additional setup after loading the view.
    }
}

extension TabBarViewController: UITabBarControllerDelegate {
    func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {
        if viewController.restorationIdentifier == "safariTabViewController" {
            if let url = URL(string: "your_url"), UIApplication.shared.canOpenURL(url) {
                UIApplication.shared.openURL(url)
            }
            return false
        }
        return true
    }
}

когда вы возвращаете false в делегате - вы убедитесь, что вкладка не будет переключаться

0 голосов
/ 15 ноября 2018

Вы должны встроить веб-представление в tab4, используя WKWebView или UIWebView. Таким образом, вам не нужно будет оставлять заявку.

Что-то вроде,

let webView = WKWebView()



override func loadView() {
    self.view = webView
}


if let url = URL(string: "https://www.apple.com") {
    let request = URLRequest(url: url)
    webView.load(request)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...