Таким образом, после того, как я возился с различными образцами в интернете, и, тем не менее, ни один из них, похоже, не работал должным образом, я отбросил собственную анимацию seque для последующего взлома. Решил придерживаться чуть ли не того, что предложил Хоши. По крайней мере, моя панель вкладок всегда видна, а кода для анимации еще меньше.
Итак, с StoryBoarding я закончил с этим (немного отличающимся от предложения Хоши):
+-> [NavC-1] --> [VC-1-1] --(push)-> [VC-1-2] ...
| (shows nav bar)
[TabC] -+
|
+-> [NavC-2] --> [VC-2-1] --(push)-> [VC-2-2]
(hides nav bar)
Я использовал стандартный Push Seque для перехода вперед в слайде (здесь нет написанного кода, все на StoryBoard)
Затем во второй ветке мне нужно было иметь вид без навигационной панели и с пользовательской кнопкой «Назад», которая при нажатии запускала переход назад. Конечно, панель вкладок должна оставаться там, где она есть.
Панель навигации было легко скрыть, просто снимите флажок «Показывает панель навигации» на панели атрибутов [NavC-2].
Теперь, чтобы получить обратный слайд-переход, я создал собственный класс для каждого View Controller во второй ветви и заполнил их следующим:
#import "VC_2_1.h"
@implementation VC_2_1
- (IBAction)on_back_button_pressed:(id)sender
{
[self.navigationController popViewControllerAnimated:YES];
}
@end
on_back_button_pressed - это то, что вызывается кнопкой назад на [VC-2-1].
То же самое касается [VC-2-2] и любого другого VC, следующего во второй ветви.
И все эти люди дали мне именно то, что мне было нужно.
Нажимайте пользовательские кнопки и перемещайтесь между представлениями, используя анимацию слайдов влево и вправо. И вкладка не теряется. :)
на самом деле ключом к проблеме была эта строка, как предложил Хоши.
[self.navigationController popViewControllerAnimated:YES];
это был единственный способ, который давал мне анимацию обратного слайда при нажатии на пользовательскую кнопку (не кнопку возврата на стандартной панели навигации)
Ура!