вставка представления в стек ниже текущего корневого представления - PullRequest
1 голос
/ 13 декабря 2011

Я пытаюсь реализовать интерфейс, подобный календарю, со стрелками влево и вправо, которые позволяют пользователям прокручивать назад во времени / вперед во времени. Для этого я использую контроллер навигации и помещаю / выталкиваю представления в стек.

Однако, что если я сейчас просматриваю корневой вид и не могу открыть вид, чтобы получить правильное направление анимации, если пытаюсь вернуться назад во времени?

На прошлой неделе я обнаружил сообщение о переполнении стека, в котором демонстрируется метод, в котором новое представление будет помещаться в стек ниже текущего корневого представления, позволяя удалить корневое представление. Это была всего лишь пара строк кода - в первую очередь получение массива текущих элементов в стеке и как-то проталкивание нового представления под текущее активное представление. К сожалению, я больше не могу найти этот конкретный пост ...

Кто-нибудь сталкивался по той же ссылке, или мог бы указать мне правильное направление? Раньше у меня это работало правильно, и из-за сбоя компьютера потерял часть моей работы.

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, каждый раз, когда я иду вперед во времени, а затем возвращаюсь к предыдущему представлению, кажется, что добавляется дополнительное представление к массиву, который не не снимаю позже. Пока это будет работать, но, надеюсь, я смогу решить эту проблему.

1 Ответ

1 голос
/ 13 декабря 2011

Справочник по классам UINavigationController
Я думаю, что вы говорите о @property(nonatomic, copy) NSArray *viewControllers
Цитирую ссылку:

Обсуждение
Контроллер корневого представления имеет индекс 0 в массиве, контроллер заднего обзора - индекс n-2, а верхний контроллер - индекс n-1, где n - количество элементов в массиве.
Назначение нового массива контроллеров представления этому свойству эквивалентно вызову setViewControllers: animated: метод с анимированным параметром, установленным в NO.

Это та информация, которую вы ищете?


Для того, что вы пытаетесь сделать, вы можете рассмотреть что-то в UIView .

transitionFromView: toView: продолжительность: опции: завершение:
Создает анимацию перехода между указанными видами с использованием заданных параметров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...