我正在实现“ Tabbet应用程序”,并且需要“ Tab”才能在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,但保持选中的Tab1
答案 0 :(得分:2)
使用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时-确保不会切换选项卡
答案 1 :(得分:0)
您应该使用WKWebView
或UIWebView
将webView嵌入tab4中。这样,您就不必离开应用程序。
类似
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)
}