How to: Save order of tabs when customizing tabs in UITabBarController

后端 未结 8 1231
终归单人心
终归单人心 2020-11-29 21:02

I am having problems finding any other information than the docs for how to save the tab order for my UITabBarController, so that the user\'s customization is saved for next

8条回答
  •  星月不相逢
    2020-11-29 21:27

    Updated Answer for Swift 2.0

    `
    let tabBarOrderKey = "tabBarOrderKey"

    extension TabBarButtonsController: UITabBarControllerDelegate {
    
     // Saves new tab bar custom order
    
      func tabBarController(tabBarController: UITabBarController, didEndCustomizingViewControllers viewControllers: [UIViewController], changed: Bool) {
    var orderedTagItems = [Int]()
    if changed {
      for viewController in viewControllers {
        let tag = viewController.tabBarItem.tag
        orderedTagItems.append(tag)
    
      }
      NSUserDefaults.standardUserDefaults().setObject(orderedTagItems, forKey: tabBarOrderKey)
    }
    }
    
    // set up tag to compare with when pulling from defaults and for saving initial tab bar change
    
    func setUpTabBarItemTags() {
    var tag = 0
    if let viewControllers = viewControllers {
      for view in viewControllers {
        view.tabBarItem.tag = tag
        tag += 1
      }
     }
    }
    
    // Get Saved Tab Bar Order from defaults
    
    func getSavedTabBarItemsOrder() {
    var newViewControllerOrder = [UIViewController]()
    if let initialViewControllers = viewControllers {
      if let tabBarOrder = NSUserDefaults.standardUserDefaults().objectForKey(tabBarOrderKey) as? [Int] {
        for tag in tabBarOrder {
          newViewControllerOrder.append(initialViewControllers[tag])
        }
        setViewControllers(newViewControllerOrder, animated: false)
      }
     }
    }
    

    }

    `

    Remember to set the delegate and call these methods in the view did load

提交回复
热议问题