Вкладка по умолчанию не отображает первую вкладку как выбранную

#ios #swift #customization #uitabbar

#iOS #swift #настройка #uitabbar

Вопрос:

Я использовал пользовательский UITabBar для своего приложения, поскольку для моего приложения требуется viewcontroller вместо uitabbarcontroller. В этом я показал оба viewcontroller, добавив и удалив 2-й viewcontroller в качестве подвида. Пока это нормально, но элемент панели вкладок не отображает первый элемент панели вкладок в выделенном состоянии, вместо этого после выбора второго элемента панели вкладок (из этого элементы панели вкладок показывают выделение.) выделение следует.

Итак, я попробовал одно решение: я добавил переменную bool «selected» в качестве определенного пользователем атрибута времени выполнения, это также не удалось, показав, что первый элемент панели вкладок по-прежнему выделяется даже после выбора второй панели вкладок.

Могу ли я узнать какую-либо другую альтернативу для отображения выделения вкладки по умолчанию при загрузке представления.

 func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem){
        switch item.tag {
        case 1:
            if sampleTwo == nil {
                var storyboard = UIStoryboard(name: "Main", bundle: nil)
                sampleTwo = storyboard.instantiateViewController(withIdentifier: "liveeventsVC") as! LiveEventsViewController
            }
            sampleTwo?.view.removeFromSuperview()

            sampleTwo?.removeFromParentViewController()
            break
        case 2:
            if sampleTwo == nil {
                var storyboard = UIStoryboard(name: "Main", bundle: nil)
                sampleTwo = storyboard.instantiateViewController(withIdentifier: "liveeventsVC") as! LiveEventsViewController
            }
            self.view.insertSubview(sampleTwo!.view!, belowSubview: self.bidLiveTabbar)

            self.addChildViewController(sampleTwo!)
            break
        default:
            break
        }
    }
  

Как отобразить вкладку по умолчанию, выбранную при загрузке экрана, которая также отображается на пользовательской панели вкладок?

Комментарии:

1. Вам не нужно выделять вкладку по умолчанию… Когда вы показываете TabBarController… он автоматически выделяет элемент панели вкладок по умолчанию… Возможно, вы не установили какое-либо изображение или заголовок элемента панели вкладок…

2. Я не использую контроллер панели вкладок, я использую пользовательский UITabBar. Которая перетаскивается из библиотеки объектов.

3. Извините, я сначала не заметил…

Ответ №1:

 IBOutlet weak var tabBar:UITabBar!//and connect this property to the UITabBar in Interface Builder


override func viewWillAppear(animated: Bool) { 
    super.viewWillAppear(animated)      

    if let items = tabBar!.items  {
            for item in items {
                if item.title == "My Tab Title" {
                    tabBar.selectedItem = item;
                }
            }
        }     
}
  

Это работает, если все вкладки имеют уникальный заголовок, что обычно имеет место.

Комментарии:

1. Куда ее следует добавить?

2. Сработало, но при возврате с другого экрана отображается ошибка как «Поток 1: неустранимая ошибка: неожиданно обнаружено значение nil при развертывании необязательного значения»

3. В строке отображается ошибка при ошибке, если разрешить элементы = панель вкладок! .элементы — «Поток 1: неустранимая ошибка: неожиданно обнаружено значение nil при развертывании необязательного значения»..

4. Теперь все в порядке. Спасибо.

5. Звучит здорово… Также отметьте этот ответ как положительный… Спасибо