it-roy-ru.com

Предупреждение "Несбалансированные вызовы для начала/конца переходов внешнего вида" при модальном нажатии на представление в XCode 4 с раскадровкой

После некоторых исследований в Интернете безуспешно, я пришел сюда, чтобы задать вам вопрос о моем предупреждении.

На самом деле, у меня есть представление V1 с контроллером навигации, и я хочу нажать модальное представление V2, когда V1 завершит загрузку . Поэтому я использую метод performSegueWithIdentifier (я использую раскадровку) . Вот мой код :

[self performSegueWithIdentifier:@"showConnexionViewSegue" sender:self];

И когда я компилирую, я получил это предупреждение:

Unbalanced calls to begin/end appearance transitions for <UINavigationController: 0x6849b30>

Может кто-нибудь мне помочь?

26
Vinestro

Похоже, вы выполняете переход в -viewWillAppear:, таким образом генерируя два сообщения -viewWillAppear: без двух соответствующих сообщений -viewDidAppear.

Попробуйте выполнить переход в -viewDidAppear.

57
Mark Adams

«Несбалансированные вызовы для начала/окончания появления переходов для»

Говорит, что анимация запускается до того, как последняя связанная анимация не завершена .. Итак, вы подключаете какой-либо контроллер представления перед тем, как нажать новый? если да, попробуйте сделать это без анимации Т.е. [self.navigationController popToRootViewControllerAnimated: NO];

И посмотрите, решит ли это проблему. В моем случае это помогло.

5
infiniteLoop

У меня была эта проблема, но то, что я сделал, было на UIViewController. Я связал Segue с UIButton, а также закодировал его в функцию nextBtnPressed:, так что я фактически нажимал две новые UIViewControllers нажатием одной кнопки. Ограничение только одним segue исправило это. Но потребовалось некоторое расследование, чтобы увидеть, что я сделал это вдвойне.

5
DonnaLea

Причины этого многообразны и очень специфичны для контекста и программирования. Например, то, что я делал, было

  1. инициализация звукового файла, его воспроизведение (асинхронно) в течение 1,4 секунд, 
  2. перемещение изображения по экрану с использованием анимации, рассчитанной на 1,4 секунды, и,
  3. с таймером, установленным на 1,4 секунды после шага 2, нажимая на контроллер вида.

Я обнаружил, что если у меня нет инструкций для этих трех шагов один за другим (если я их перепутаю), то я получаю ошибку «Несбалансированные звонки ...». Кроме того, если я установлю время нажатия на viewcontroller менее чем на 1,4 секунды, я также получу сообщение.

Итак, проверьте правильность последовательности и времени выполнения ваших программных инструкций.

1
Anjaan