Сохранить пользовательский порядок вкладок в приложении с вкладками - PullRequest
0 голосов
/ 25 апреля 2018

Поскольку я разрабатывал приложение с вкладками внутри XCode, используя swift4, я заметил, что как только у вас будет достаточно вкладок и вы нажмете больше, это даст вам возможность изменить порядок вкладок.Однако они сбрасываются, когда я закрываю приложение.Можно ли сохранить порядок, в котором они меняют вкладки?

1 Ответ

0 голосов
/ 25 апреля 2018

Подкласс вашего TabBarController, используя следующий код

import UIKit

class MyTabBarController: UITabBarController, UITabBarControllerDelegate {

    override func viewDidLoad() {
        super.viewDidLoad()

        self.delegate = self

        restoreOrder()
    }


    override func tabBar(_ tabBar: UITabBar, didEndCustomizing items: [UITabBarItem], changed: Bool) {

        let order = getCurrentOrder()
        saveOrder(order: order)
    }

    private func getCurrentOrder() -> [Int] {

        var order: [Int] = []

        if let controllers = self.viewControllers {
            for controller in controllers {
                order.append(controller.tabBarItem.tag)
            }
        }

        return order
    }

    private func saveOrder(order: [Int]) {

        UserDefaults.standard.set(order, forKey: "TabBarItemsOrder")
    }

    private func restoreOrder() {

        guard let order = UserDefaults.standard.value(forKey: "TabBarItemsOrder") as? [Int] else { return }

        var reorderedControllers: [UIViewController] = []

        if let controllers = self.viewControllers {
            for tag in order {
                for controller in controllers {
                    if controller.tabBarItem.tag == tag {
                        reorderedControllers.append(controller)
                    }
                }
            }
        }

        self.setViewControllers(reorderedControllers, animated: false)
    }

}

Установите тег для каждого элемента панели вкладок viewController, управляемого вашим контроллером панели вкладок.

tabs

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...