TabBar Controller с настраиваемым действием - PullRequest
0 голосов
/ 06 июня 2019

Я новичок в Свифте.Я реализую контроллер вкладок в моем проекте и сталкиваюсь с некоторыми трудностями проектирования.Моя цель - когда пользователь щелкает элемент панели вкладок, он не должен переходить к другому контроллеру представления.Он должен остаться в текущем представлении и добавить всплывающее представление к текущему контроллеру представления. Я пробовал, но всегда переходил к следующему контроллеру представления.

1 Ответ

1 голос
/ 06 июня 2019

Создайте подкласс UITabBarController и используйте этот класс для контроллера панели вкладок. Подтвердите UITabBarControllerDelegate в контроллере панели вкладок и верните false в методе tabBarController shouldSelect, если вы не хотите переходить к контроллеру представления. Здесь вы можете показать всплывающее окно.

class TabbarController: UITabBarController, UITabBarControllerDelegate {
    override func viewDidLoad() {
        super.viewDidLoad()
        delegate = self
    }
    func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {
        if let navigationController = viewController as? UINavigationController,
            navigationController.viewControllers.contains(where: { $0 is MoreViewController }) {
            //show pop up view
            return false
        } else  {
            return true
        }
    }
}

Или вы можете добавить UITabBarControllerDelegate в один из своих встроенных контроллеров представления, как это

class ViewController: UIViewController, UITabBarControllerDelegate {
    override func viewDidLoad() {
        super.viewDidLoad()
        self.tabBarController?.delegate = self
    }
    func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {
        if let navigationController = viewController as? UINavigationController,
            navigationController.viewControllers.contains(where: { $0 is MoreViewController }) {
            //show pop up view
            return false
        } else  {
            return true
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...