Предотвратить изменение вкладки на определенный индекс - IOS
Спасибо за чтение моего вопроса.
Я пытаюсь реализовать всплывающее меню, когда пользователь нажимает на вкладку с индексом 4. Поэтому я пытаюсь запретить переключению viewcontroller на панели вкладок при нажатии индекса 4.
Вот мой код:
- (BOOL) tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
{
if(viewController == [tabBarController.viewControllers objectAtIndex:4]){
NSLog(@"NO");
return NO;
}else{
NSLog(@"YES");
return YES;
}
}
Я реализовалUITabBarControllerDelegate
а такжеself.delegate = self;
вviewDidLoad
и это работает, но только один раз.
Когда я нажимаю на вкладку указателя 4, отображается меню, а панель вкладок не переключает вид (ЗДОРОВО), но когда я нажимаю на нее снова, вид меняется, даже если я получаю журнал «НЕТ». В чем может быть проблема здесь?
Спасибо за любые предложения!
РЕШИТЬ
Благодаря ответу Kasaname ниже, я решил это, добавив selectedindex и установив для него индекс флага (prevtab). Я изменяю prevtab на индекс последней выбранной вкладки, за исключением случаев, когда пользователь выбирает индекс 4. Мой окончательный код:
- (BOOL) tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
{
if(viewController == [tabBarController.viewControllers objectAtIndex:4]){
self.selectedIndex = prevTab; //only change in this method
return NO;
}else{
return YES;
}
}