Это было моё решение, оно было НАИБОЛЕЕ чистейшим способом, который я нашел, чтобы сделать это ... Я действительно надеюсь, что это поможет, я потратил часы на поиски лучших способов.
Я настроил делегата "UITabBarController"который подключается непосредственно к моему интерфейсу вкладок, встроенному в мою раскадровку.
** Не забудьте включить делегат "tabBarController" в заголовочный файл
** Обратите внимание, что этот метод обратного вызова НЕ является«didSelectViewController», а не «shouldSelectViewController».Этот метод обрабатывает запрос до выбора вкладки, и это именно то, что вам нужно, поэтому вы можете ОСТАНОВИТЬ запрос до того, как он произойдет ... Таким образом, вам не нужно сохранять текущий индекс, на котором вы находитесь, передавать его ився эта ерунда.
Затем я просто проверяю, какая вкладка будет выбрана (на основе заголовка контроллера представления.
** Также: это мой код, измените его, как необходимо для вашего кодаНо принципы должны остаться. Мой "executeSegueWithIdentifier" на самом деле является ручным переходом, подключенным к моему контроллеру вкладок, который открывается в модальном режиме. Этот код отлично работает для меня.
-(BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController{
if([[viewController title] isEqualToString:@"tellvc"])
{
[self performSegueWithIdentifier:@"shareModelViewController" sender:Nil];
return NO;
}
else
{
return YES;
}
}