Вызовите SFSafariViewController из UITabBarController и вернитесь после нажатия кнопки "Готово".
У меня есть обычай UITabBarController
с пользовательской кнопкой. Когда я нажимаю эту кнопку, я открываю SFSafariViewController
- здесь все отлично работает. Но когда я нажал кнопку "Готово" в SFSafariViewController
его уволить. но я не могу вернуться к UITabBarController
Я вижу только цвет фона, который я добавил в окно делегата приложения.
Образец кода:
class TabBar: UITabBarController, UITabBarControllerDelegate, SFSafariViewControllerDelegate {
override func viewDidLoad() {
super.viewDidLoad()
delegate = self
}
func setupCenterButton() {
let centerButton = CenterButton(frame: CGRect(x: 0, y: 0, width: 74, height: 74))
centerButton.layer.cornerRadius = 37
centerButton.frame.origin.y = self.tabBar.frame.minY - 37
centerButton.frame.origin.x = view.bounds.width/2 - 37
centerButton.setImage(UIImage(named: "google"), for: .normal)
centerButton.addTarget(self, action: #selector(openURL), for: .touchUpInside)
view.addSubview(centerButton)
view.layoutIfNeeded()
}
@objc func openURL() {
let termsURL = SFSafariViewController(url: URL(string: "https://google.ru")!)
termsURL.modalPresentationStyle = .currentContext
termsURL.delegate = self
self.present(termsURL, animated: true, completion: nil)
}
}
Как я могу представить UITabBarController
после SFSafariViewController
?
1 ответ
У меня была такая же проблема, я решил программно выбрать другой элемент панели вкладок, когда я нажимаю "Готово" на моем SafariViewController. В моем примере я выбираю первый элемент панели вкладок.
import UIKit
import SafariServices
class WebViewController: UIViewController, SFSafariViewControllerDelegate {
override func loadView() {
}
override func viewDidLoad() {
super.viewDidLoad()
guard let url = URL(string: "<your website url>") else {
return
}
let safariVC = SFSafariViewController(url: url)
present(safariVC, animated: true, completion: {self.selectFirstTab()})
}
func selectFirstTab(){
self.tabBarController?.selectedIndex = 0
}
}
func safariViewControllerDidFinish(_ controller: SFSafariViewController) {
//To access the Specific tabBar ViewController
let tabBarController = storyboard?.instantiateViewController(withIdentifier: "IdentifierTabbar") as! TabBar
// tabBarController.isComingFrom = "Settings" // Assign the Value
window?.rootViewController = tabBarController
}