#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. Звучит здорово… Также отметьте этот ответ как положительный… Спасибо