вызывает сбой во время выполнения! - PullRequest
0 голосов
/ 18 ноября 2010

У меня есть 3 контроллера вида в моем UINavigationController. Если я использую pushViewController и popViewController для переключения между контроллерами представления, все в порядке.

Но если я вызываю setViewControllers для переупорядочения их порядка, я получаю сбой, когда нажимаю кнопку обратной навигационной панели.

[UIBarButtonItem executeSelector: withObject: withObject]: сообщение для освобожденного экземпляра.

Оригинальный стек - A и B, а затем я установил A и C, как показано ниже.

[делегат.navigationController setViewControllers: [NSArray arrayWithObjects: [[делегат.navigationController viewControllers] objectAtIndex: 0], controllerC, ноль] анимированный: ДА];

Мне показалось странным, что ... если я вызову этот метод с анимацией: НЕТ, сбой не произойдет.

В чем секрет анимированного параметра для моего кода? помогите пожалуйста ...: (

Ответы [ 2 ]

1 голос
/ 18 ноября 2010

Тот факт, что это происходит только с анимированными: ДА заставляет меня думать, что это гоночный режим с автоматическим выпуском Вы выделяете свой экземпляр controllerC с помощью автоматического выпуска? Если это так, попробуйте избежать этого и явно освобождать его после вызова setViewControllers. Дайте мне знать, если это решит вашу проблему.

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

-S

0 голосов
/ 18 ноября 2010

У меня была та же проблема, и она мне показалась ошибкой в ​​iOS.Обходным решением для меня было сначала нажать новый контроллер представления:

[navigationController pushViewController:controllerC animated:YES];

Затем установить стек контроллеров представления на правильное значение (чтобы устранить промежуточные):

NSArray *newViewControllers = [NSArray arrayWithObjects:controllerA, controllerC, nil];
[navigationController setViewControllers:newViewControllers animated:NO];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...