UITabBarController не меняет представление после загрузки страницы - PullRequest
0 голосов
/ 17 июня 2020

У меня проблема с просмотром изменений в 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";
              }
     }   

}
...