У меня проблема с просмотром изменений в UITabViewController. В UITabViewContoller добавлены ex. 5 viewControllers. Я хочу программно изменить представление. Если я установлю номер представления 2 (self.selectedIndex = 2) в viewDidLoad. Работает отлично. Но если я изменю вид после загрузки. Не работает.
Я читал на какой-то странице, что изменить страницу можно только в viewDidLoad. Я также заметил, что когда мы меняем страницу в навигаторе, автоматически выполняем viewDidLoad в UITabViewController.
import UIKit
class NavigatorTabBarController: UITabBarController {
private var nameViewController = "MagnesViewController";
override func viewDidLoad() {
super.viewDidLoad()
self.moreNavigationController.interactivePopGestureRecognizer?.isEnabled = false
self.moreNavigationController.navigationBar.isHidden = true
self.moreNavigationController.topViewController?.view.isHidden = true;
self.tabBar.isTranslucent = true
self.tabBar.isHidden = true
print("viewDidLoad");
self.selectedIndex = 2
}
public func setViewController(name: String) {
self.nameViewController = name;
self.setViewInTabView(controllerName: name)
}
private func setViewInTabView(controllerName: String) {
for controller in self.viewControllers! {
let className = String(describing: controller.classForCoder);
if(className == controllerName) {
self.selectedViewController = controller;
break;
}
}
}
}
import UIKit
class NavigationController: UIViewController {
private var mainTabView: NavigatorTabBarController?
override func viewDidLoad() {
super.viewDidLoad()
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if let tabBarController = segue.destination as? NavigatorTabBarController {
self.mainTabView = tabBarController;
if let identifier = segue.identifier {
let controllerName = self.getControllerName(segueName: identifier);
self.mainTabView!.setViewController(name: controllerName)
}
}
print(segue.identifier);
}
private func getControllerName(segueName: String) -> String {
switch segueName {
case "NewPhotos":
return "NoweViewController";
default:
return "MagnesViewController";
}
}
}