我正在实现“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,但保持选中状态
最佳答案
使用UITabBarControllerDelegate添加到您的UITabBarController扩展,也设置为Tab 4还原ID
在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时-确保不会切换选项卡