Я пытаюсь реализовать интерфейс, подобный календарю, со стрелками влево и вправо, которые позволяют пользователям прокручивать назад во времени / вперед во времени. Для этого я использую контроллер навигации и помещаю / выталкиваю представления в стек.
Однако, что если я сейчас просматриваю корневой вид и не могу открыть вид, чтобы получить правильное направление анимации, если пытаюсь вернуться назад во времени?
На прошлой неделе я обнаружил сообщение о переполнении стека, в котором демонстрируется метод, в котором новое представление будет помещаться в стек ниже текущего корневого представления, позволяя удалить корневое представление. Это была всего лишь пара строк кода - в первую очередь получение массива текущих элементов в стеке и как-то проталкивание нового представления под текущее активное представление. К сожалению, я больше не могу найти этот конкретный пост ...
Кто-нибудь сталкивался по той же ссылке, или мог бы указать мне правильное направление? Раньше у меня это работало правильно, и из-за сбоя компьютера потерял часть моей работы.
EDIT:
При некоторых экспериментах у меня это частично работает ...
// create new view controller
ViewController *viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
// add below root
NSMutableArray *allViews = [[NSMutableArray alloc] initWithArray:self.navigationController.viewControllers];
[allViews insertObject:viewController atIndex:0];
[viewController release];
self.navigationController.viewControllers = allViews;
[[self navigationController] popViewControllerAnimated:YES];
[allViews release];
Однако, похоже, что происходит утечка памяти - если я делаю NSLog массива allViews, каждый раз, когда я иду вперед во времени, а затем возвращаюсь к предыдущему представлению, кажется, что добавляется дополнительное представление к массиву, который не не снимаю позже. Пока это будет работать, но, надеюсь, я смогу решить эту проблему.