У меня есть простое приложение, в котором единственный контроллер просмотра имеет выход к UITabBar. Он также реализует UITabBarDelegate и устанавливается в качестве делегата для UITabBar:UITabbar без контроллера
@interface TheMainViewController : UIViewController <UITabBarDelegate>
{
IBOutlet UITabBar *theTabBar;
}
я реализовал следующий метод, который будет вызываться всякий раз, когда какой-либо из моих 4 UITabBarItems получить постучал. Я пытался просто делать что-то на самом деле просто:
- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item
{
tabBar.selectedItem = [tabBar.items objectAtIndex:0];
return;
}
В теории, он должен всегда оставаться выбран на моей первой вкладке, и это прекрасно работает, когда я просто нажмите любую UITabBarItem (ничего не происходит, первый всегда остается выбран). Но когда я касаюсь UITabBarItem и удерживаю его (не отводя мой палец), выбор меняется в любом случае! Отладка, все правильно называется.
Как будто изменение свойства selectedItem не имеет никакого эффекта, пользователь все еще имеет элемент «вниз» (пальцем на нем).
Что было бы хорошим обходным решением? Я попытался перегрузить UITabBar и возиться с touchhesBegan и touchhesEnd, но они даже не вызываются. То же самое с UITabBarItem.
О, и, пожалуйста, не предлагайте использовать UITabBarController, поскольку он недостаточно гибкий для моего приложения.
Так разочарование .... спасибо!
Ну в основном у меня уже есть целая куча других видов, которые анимируются в зависимости от статуса вкладки (больше, чем вставлять и выходить). Кроме того, моя вкладка не находится внизу, как это делает контроллер. Для переключения на контроллер потребуется большой рефакторинг, которого я хочу избежать. Что касается других замечаний, когда вы щелкаете и удерживаете tabbaritem, функция «didselectitem» вызывается после небольшой задержки, даже если фактический элемент подсвечивается только при отпускании. – Etienne