Триггер выбора изображений при нажатии кнопки UITabBarController - PullRequest
0 голосов
/ 15 октября 2018

Я сделал tabbar в storyboard с 4 элементами панели, я соединил их все с другими контроллерами представления путем перетаскивания правой кнопкой мыши и установки viewcontroller segue.Теперь для второй кнопки я хочу показать imagepicker вместо viewcontroller.Когда я удаляю второй переход из раскадровки в UITabBarController, мой 4-й элемент панели исчезает.

Это мой контроллер вкладок

class BaseTabBarController: UITabBarController, UITabBarControllerDelegate {
    let arrayOfImageNameForUnselectedState = ["home", "explore", "addIcon", "notification", "accountIcon"]
    let arrayOfImageNameForSelectedState = ["homeFilled", "exploreFilled", "addIcon", "notificaitonFilled", "accountIcon"]

    override func viewDidLoad() {
        super.viewDidLoad()
        self.delegate = self

        if let count = self.tabBar.items?.count {
            for i in 0..<count {
                let imageNameForSelectedState   = arrayOfImageNameForSelectedState[i]
                let imageNameForUnselectedState = arrayOfImageNameForUnselectedState[i]

                self.tabBar.items?[i].selectedImage = UIImage(named: imageNameForSelectedState)?.withRenderingMode(.alwaysOriginal)
                self.tabBar.items?[i].image = UIImage(named: imageNameForUnselectedState)?.withRenderingMode(.alwaysOriginal)
            }
        }

    }

    override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {

        if tabBar.items?.index(of: item) ?? 0 == 2 {
            //Clicked add tab, cancel segue and show imagepicker
        } else {
            selectedTabindex = tabBar.items?.index(of: item) ?? 0
        }
    }
}

Как показать средство выбора изображений при нажатии кнопки 2-й панели

1 Ответ

0 голосов
/ 15 октября 2018

Не удалять. Второй переход из раскадровки. Поместите фиктивный контроллер представления, чтобы показать кнопку вкладки внутри панели вкладок.Реализуйте метод делегата контроллера UITabBarController в подклассе UITabBarController и верните false в методе shouldSelect для второго viewcontroller и представьте для него представление ImagePicker.

Код:

class BaseTabBarController : UITabBarController {

    override func viewDidLoad() {
        super.viewDidLoad()
        self.delegate = self
    }

    override var prefersStatusBarHidden: Bool {
        return false
    }

}

extension BaseTabBarController : UITabBarControllerDelegate {

    func  tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {
        if self.viewControllers?.index(of:viewController) == 1 {
            // TO Do code for Image Picker and Present it 
            return false
        } else {
            return true
        }
    }

    func tabBarController(_ tabBarController: UITabBarController, didSelect viewController: UIViewController) {

    }

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