Просмотр перехода без использования контроллера навигации? - PullRequest
0 голосов
/ 30 апреля 2011

Я хочу реализовать переход вида без использования контроллера навигации, такого как механизм pushviewController.Итак, я создал иерархию представлений, как показано ниже.Окно superview и содержит три подпредставления.

[window] - aViewController - bViewController - cViewController 

Если я хочу вернуться к aVewiController из cViewController, я просто снова выделяю aViewController следующим образом: [[aViewController alloc] init].

Затем, после 4 обращений, я получил didReceiveMemoryWarningи сообщения «Программа вышла со значением состояния: 0».Это очевидно проблема с памятью, но нет утечки памяти.Выделение viewcontroller снова и снова является проблемой.Я понятия не имею, как передать представление в этом случае.

Ответы [ 3 ]

1 голос
/ 30 апреля 2011

Если вы хотите, чтобы ваша иерархия UIViewController работала так же, как в случае UINavigationController, вам следует

A) показать ваш новый ViewController с этим вызовом

//This code should be implemented in viewControllerA
[self presentModalViewController:viewControllerB animated:YES]

B) вернуться на один шаг назад, позвонив

//This code should be implemented in viewControllerA
[self dismissModalViewControllerAnimated:YES]

Примечания. Вы можете сказать viewControllerA, что хотите закрыть viewControllerB, отправив NSNotification. Хорошая вещь в этом заключается в том, что если вы хотите перейти от viewControllerC к viewControllerA, вы просто отправляете уведомление viewControlerA для dismisModalViewController, и оно рекурсивно отклонит viewControllerC и viewControllerB для вас.

Надеюсь, это поможет

0 голосов
/ 30 апреля 2011

Вам нужно будет убедиться, что вы отпускаете свой объект после того, как добавите его в суперпредставление. и убедитесь, что вы удаляете их из суперпредставления, когда они отправляются за пределы экрана ....

Если вы хотите повторно использовать объект, вы можете сохранить их в списке и попытаться удалить их из очереди, как в табличном представлении. Таким образом, вам не придется каждый раз переделывать их.

Если вы добавляете их в подпредставление и никогда не удаляете их. тогда у вас будет несколько видов, которые больше не используются, на которые все еще ссылается их суперпредставление. поэтому они все еще будут в памяти.

0 голосов
/ 30 апреля 2011

Вы должны распределить их только один раз и переходить между самими представлениями, скрывая / скрывая их:

viewController.view.hidden = YES / NO;

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