Я новичок в разработке для iOS с использованием Xcode 10.2 и Swift 5 (последнее обновление). Я разрабатываю приложение для iOS, используя TabBar и WKWebview. Приложение имеет 5 вкладок, каждая из которых отображает свою веб-страницу.
Я хочу сделать так, чтобы пользователь получал доступ к первой вкладке и просматривал ее там, а затем пользователь нажимал на другую панель вкладок, после чего пользователь возвращался к первой вкладке и по-прежнему отображал ту же страницу, прежде чем перейти на другую вкладку. Если пользователь хочет вернуться на корневую страницу вкладки, просто снова нажмите активную панель вкладок.
Как я могу это сделать?
Я использую RootViewController, затем расширяется до 5 других ViewController:
- HomeViewController
- SignalViewController
- ContactViewController
- NewsViewController
- ProfileViewController
Я попробовал несколько предложений со многих сайтов, но не смог, например, используя:
- UITabBarControllerDelegate tabBarController (: didSelect :)
- UIViewController viewDidAppear ( :)
- UIViewController viewWillAppear ( :)
- super.viewDidLoad () или self.viewDidLoad ()
- UIView setNeedsDisplay ( :)
- webview.load ()
// set global variable for checking selected index tab
var prevTab: Int = 0
var currentTab: Int = 0;
class RootViewController: UIViewController, WKUIDelegate, UITabBarControllerDelegate {
// declare var for WebKit
var webView: WKWebView!
// load view of WebKit
override func loadView() {
let webConfiguration = WKWebViewConfiguration()
webView = WKWebView(frame: .zero, configuration: webConfiguration)
webView.uiDelegate = self
view = webView
}
// for display URL in WebKit
func goToUrl(url: String){
let myURL = URL(string:url)
let myRequest = URLRequest(url: myURL!)
webView.load(myRequest)
}
}
class HomeViewController: RootViewController {
let defaultUrl : String = "https://yourdomain.com/"
override func viewDidLoad() {
super.viewDidLoad()
// for checking click on active tab to root page of tab
self.tabBarController?.delegate = self
// call URL to dipslayed on WebKit View
self.goToUrl(url: defaultUrl)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
// Tells the delegate that the user selected an item in the tab bar
func tabBarController(_ tabBarController: UITabBarController, didSelect viewController: UIViewController){
// get selected index tab
currentTab = self.tabBarController?.selectedIndex ?? 0
if(prevTab == currentTab){
// MUST GO TO DEFAULT URL
}
// save selected index tab for next checking
prevTab = currentTab
}
}
Я ожидаю, что когда пользователь снова нажмет на панель вкладок ACTIVE (prevTab равен currentTab), тогда WKWebview перейдет к URL-адресу по умолчанию, но не получится (ничего не произошло).