Предотвратить изменение вкладки на определенный индекс - 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;
    }

}

Ответы на вопрос(2)

Ваш ответ на вопрос