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 中。这可能是最简单的入门方法。
今天我开始练习如何使用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 中。这可能是最简单的入门方法。