Свойство iPhone / iPad UINavigationController внутри UIViewController? - PullRequest
0 голосов
/ 08 февраля 2012

Внутри UIViewController есть свойство:

 @property(nonatomic, readonly, retain) UINavigationController *navigationController

Я не совсем уверен, как используется это свойство ... Как я понимаю, если у вас есть контроллер навигации с именем navController и введите какой-нибудь код, напримерэто:

[navController pushViewController:nextController animated:YES];  

происходит несколько вещей.Первый nextController помещается поверх стека navController.Во-вторых, navController сохраняет nextController.В-третьих, свойство readonly для nextController (navigationController) инициализируется с помощью navController.Таким образом, navController сохраняет nextController, а nextController сохраняет navController.Это приводит к тому, что если вы выпускаете navController, он не будет уничтожен, поскольку он сохраняется всеми UIViewController в его стеке.Единственный способ освободить его - вытащить все элементы из стека, а затем выпустить его.

Так все это работает, или я что-то упустил?

Ответы [ 2 ]

0 голосов
/ 08 февраля 2012

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

UIViewController *vc = [[UIViewController alloc] init];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:vc];

теперь у вас есть видеомагнитофон внутри контроллера навигации .. если вы хотите показать другой виртуальный канал, вы можете сделать это следующим образом [vc.navigationController pushViewController:detailViewController animated:YES];

для релиза вам просто нужно [vc release]; [navController realese];

0 голосов
/ 08 февраля 2012

Да, вам не хватает того, что при вызове метода dealloc для nextController он освобождает свой контроллер навигации. Поэтому, когда вы выпускаете navController, он освобождает все свои контроллеры push-представления, и они выпускают свой navController. Другими словами, когда вы освобождаете контроллер навигации (при условии, что счетчик выпусков равен нулю), он выталкивает все контроллеры представления, помещенные на него.

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