У меня странная ситуация с вызовом popToRootViewController на моем контроллере навигации. Если есть только один или два контроллера представления сверху корня, чтобы выскочить, это работает просто отлично. Если в стеке имеется более двух контроллеров представления поверх корня, происходит сбой. Я просмотрел все жалобы popToRootViewController на этом и других сайтах и попытался установить анимированное значение «Нет». Это не помогает. Я также видел, как некоторые люди ссылались на проблему с iOS 3.0 с popToRootViewController на очень старых постах, но я занимаюсь разработкой на iOS 4.0.
Проще говоря, если мой стек выглядит так: RootVC -> VC1 -> VC2. И тогда я делаю
[self.navigationController popToRootViewControllerAnimated:NO];
из VC2, он выскакивает в корень, как и ожидалось. Однако, если мой стек выглядит следующим образом: RootVC -> VC1 -> VC2 -> VC3, а затем делает то же самое с VC3, происходит сбой. Любые подсказки относительно того, в чем может быть проблема? Я прошу прощения, если это действительно тупой вопрос. Я новичок в разработке iPhone.
Я использую следующий код для переноса каждого из моих представлений в стек:
-(void)pushViewNamed:(NSString *)viewname
{
iOvulate_3AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
NSString *viewControllerName=viewname;
UIViewController *targetViewController=[[NSClassFromString(viewControllerName) alloc] initWithNibName:viewControllerName bundle:nil];
[self.navigationController pushViewController:targetViewController animated:YES];
if ( [appDelegate.pdbool intValue] == 0 )
{
[viewControllerName release];
[targetViewController release];
}
}
Я поместил условный выпуск туда, потому что он решил другую проблему, с которой я столкнулся, когда IBActions в любом представлении, кроме третьего представления в стеке, не работали - так как прикосновение к кнопке вызывало отправку сообщения нулевой объект, который должен был быть контроллером представления (или что-то в этом роде?) и вызывать ошибку EXC_BAD_ACCESS . Может ли это «исправление» вызвать проблемы с управлением памятью, о которых вы говорите?