在特定的 TabBar 中打开 URL
Open URL in specific TabBar
我正在实施一个 "Tabbet App",我需要一个 "Tab" 才能在 Safari 中打开一个 URL(新的 window 不在同一个 viewcontroller 中)
目前例如在Tab4 (Tab4ViewControllerView.swif)的viewcontroller我添加了以下代码:
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 return 到应用程序时,Tab4 被选中并且因为它不包含任何东西所以它看起来是白色的。
我需要点击 Tab4 来打开 Safari,但它不应该被选中(你必须一直选择上一个标签。)
在图像的示例中:我目前在 Tab1 中,按 Tab4 应该会打开 Safari,但保持选中的 Tab1
您应该在 tab4 中嵌入一个 webView,使用 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)
}
使用 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 时 - 您要确保不会切换选项卡
我正在实施一个 "Tabbet App",我需要一个 "Tab" 才能在 Safari 中打开一个 URL(新的 window 不在同一个 viewcontroller 中)
目前例如在Tab4 (Tab4ViewControllerView.swif)的viewcontroller我添加了以下代码:
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 return 到应用程序时,Tab4 被选中并且因为它不包含任何东西所以它看起来是白色的。
我需要点击 Tab4 来打开 Safari,但它不应该被选中(你必须一直选择上一个标签。)
在图像的示例中:我目前在 Tab1 中,按 Tab4 应该会打开 Safari,但保持选中的 Tab1
您应该在 tab4 中嵌入一个 webView,使用 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)
}
使用 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 时 - 您要确保不会切换选项卡