Swift UITabBarController,保存顺序tab

Swift UITabBarController, save the order tab

今天我开始练习如何使用UITabBarController。我有几个选项卡,但当我看到 "More"(如果我有 7 个选项卡)时请注意,单击编辑以重新排列,但请注意,当我关闭应用程序并重新打开应用程序时,重新排列消失了。我相信它不会保存重新排列。我有 UserDefaults.standard 但不知道如何将重新排列保存到我的 UserDefault.standard 中。我正在使用 Swift 4。这是我的代码:

func create_tab_controller() {
   let first_view = UIViewController()
   first_view.tabBarItem.image = UIImage(systemName: "house", withConfiguration: main_symbol_configuration)
   first_view.tabBarItem.title = "Home"
   first_view.view.backgroundColor = UIColor.black

   let second_view = UIViewController()
   second_view.tabBarItem.image = UIImage(systemName: "rectangle", withConfiguration: main_symbol_configuration)
   second_view.tabBarItem.title = "Second View"
   second_view.view.backgroundColor = UIColor.darkGray

   let third_view = UIViewController()
   third_view.tabBarItem.image = UIImage(systemName: "gear", withConfiguration: main_symbol_configuration)
   third_view.tabBarItem.title = "Setting"
   third_view.view.backgroundColor = UIColor.gray

   main_tab_controller_order = [first_view, second_view, third_view]
   main_tab_controller.viewControllers = main_tab_controller_order
   view.addSubview(main_tab_controller.view)
}

也许我可以为您指出您可以做什么的大方向:

  • 在控制UITabBarController的viewController中,可以使用

    main_tab_controller_order.delegate = self

    注册UITabbarController的委托方法。

  • 然后你需要在视图控制器中实现UITabbarDelegate协议

  • UITabbarDelegate 协议包含一个名为 func tabBar(UITabBar, didEndCustomizing: [UITabBarItem], changed: Bool) 的方法。每当您更改 UITabbar 时,即当其视图控制器的顺序发生更改时,都会调用此方法。

  • 在此方法中,您可以将视图控制器的顺序保存到 UserDefaults(例如作为字符串)

  • 然后,在应用程序启动时,从 UserDefaults 中读取值并相应地创建 UITabbarController。

详细说明 UserDefaults 部分: 您可以遍历 main_tab_controller.view_controllers 中的所有元素,对于其中的每个控制器,您可以将其 class 名称作为字符串存储在 UserDefaults 中。这可能是最简单的入门方法。