我正在实现“Tabbet应用程序”,并且需要“标签”才能在Safari中打开URL(新窗口不在同一ViewController中)

目前,例如在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,但保持选中状态

ios - 在特定的TabBar中打开URL-LMLPHP

最佳答案

使用UITabBarControllerDelegate添加到您的UITabBarController扩展,也设置为Tab 4还原ID

ios - 在特定的TabBar中打开URL-LMLPHP

ios - 在特定的TabBar中打开URL-LMLPHP

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时-确保不会切换选项卡

10-08 05:27