popToRootViewController падает, когда более двух контроллеров представления извлекаются - PullRequest
0 голосов
/ 15 августа 2011

У меня странная ситуация с вызовом 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 . Может ли это «исправление» вызвать проблемы с управлением памятью, о которых вы говорите?

1 Ответ

1 голос
/ 16 августа 2011

Почему бы вам не попробовать посмотреть на каждый из контроллеров представления в вашем стеке навигации? Использование:

[self.navigationController.viewControllers objectAtIndex:index];

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

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