Eu tenho esse problema quando simulo meu aplicativo, não é um erro ou um aviso, mas aparece no meu console, alguém já experimentou isso antes?
iphone
ios
transition
C.Johns
fonte
fonte
Respostas:
No meu caso, esse erro ocorre quando você clica em duas guias em um tableview muito rápido.
O resultado faz com que o titlename incorreto e o botão Voltar desapareça. Alguém mencionou que quando você empurra uma visualização
set animated:NO
,. O erro desaparecerá, mas ainda causará algum comportamento estranho. Ele empurra duas visualizações, então você precisa voltar duas vezes para voltar à tela tableview.Método que tentei para resolver este problema:
adicionar
BOOL cellSelected;
no
viewWillAppear
cellSelected = YES;
em didselectcell delegado
if (cellSelected){cellSelected = NO; do action ; }
Isso ajuda a evitar clicar em duas células diferentes muito rapidamente.
fonte
No meu caso, aconteceu quando acionei o método de
[self performSegueWithIdentifier:@"SomeIdentifier" sender:self];
umUINavigationController
itemviewDidLoad
.Movê-lo para o
viewDidAppear
método resolveu o problema.A razão muito provável é que
viewDidLoad
nem todas as animações extravagantes já foram concluídas, enquanto emviewDidAppear
tudo está feito.fonte
Eu tenho esse problema tambem. Encontrei duas soluções para este problema:
UINavigationController
onde esse problema foi resolvido. Controlador de navegação com bufferfonte
Você deve executar seu código em um loop diferente para evitar isso
fonte
dispatch_async
fila principal. O problemadispatch_async
é que ele espera até que todas as outras animações na fila principal sejam concluídas. é muito melhor do que usar um atraso porque: 1- você nunca saberá se um atraso é suficiente, depende do seu dispositivo host 2- você acabará exagerando no atraso e algo vai demorar. tente isto:dispatch_async(dispatch_get_main_queue(), ^{[self presentViewController:self.yourModalVC animated:YES completion:nil];});
Eu tive muitos problemas com o mesmo problema. Eu resolvi isso desta maneira
1) Você não está usando o
UIViewController's
inicializador designadoinitWithNibName:bundle:
. Tente usá-lo em vez de apenasinit
.2) definido
animated:YES
como NÃO, e isso resolveu o problema. por exemplo.[self.navigationController pushViewController: viewController_Obj animated:NO];
fonte
Tive o mesmo problema ao usar o controlador de navegação e enviar outros controladores a ele. Tentei usar o Buffered Navigation Controller e várias outras abordagens, mas não funcionou para mim. Depois de gastar algum tempo para descobrir isso, percebi que esse problema ocorre se você tentar empurrar o novo controlador de visualização enquanto a transação anterior (animação) em andamento (cerca de 0,5 segundos de duração, eu acho). De qualquer forma, fiz uma solução rápida delegando controlador de navegação e aguardando o final da animação anterior.
fonte
Certifique-se de não se esquecer de -viewWillAppear, -viewDidAppear, -viewDidLoad, -viewWillDisappear, -viewDidDisappear para chamar o super método adequado em sua sobrecarga desses métodos. Por exemplo, no meu caso, eu não correspondi ao nome do método como este:
Observe que os métodos de aparecer e desaparecer são incompatíveis
fonte
super.viewWillAppear()
dentroviewDidDisappear()
.'Chamadas desequilibradas para iniciar / terminar transições de aparência para'
Diz que uma animação é iniciada antes que a última animação relacionada não seja concluída. Então, você está abrindo qualquer controlador de visualização antes de enviar o novo? Ou pode estar tentando enraizar? se sim, tente fazer isso sem animação, ou seja
[self.navigationController popToRootViewControllerAnimated:NO];
E veja se isso resolve o problema, No meu caso, funcionou.
fonte
Eu tenho esse problema porque estava chamando um UIPrintInteractionController de um viewController sem UITabbar e nem UINavigationBar. Parece que o UIPrintInteractionController não obteve o printInteractionControllerParentViewController correto. Implementar o método no delegado e retornar o rootViewController atual funcionou para mim.
fonte
Eu tive um problema semelhante que envolveu o retrocesso de diálogos modais. Postei a solução aqui ...
https://stackoverflow.com/a/38795258/324479
[Problema]
Controlador de Nav -> VC1 -Push -> VC2 -PopOver ou Segue Modal -> VC3.
O VC3 está voltando ao VC1.
Quando o segmento de VC2 para VC3 é PopOver e Modal, o desenrolamento termina em um aviso: Chamadas não balanceadas para iniciar / encerrar transições de aparência para UIViewController "
Se o segmento de VC para VC for empurrado, o aviso desaparece.
[Solução]
Seria ótimo se a lógica do desenrolamento cuidasse disso. Talvez seja um bug, talvez não. De qualquer forma, a solução é tornar VC2 (o controlador que possui o pop-up) o destino do retrocesso e, em seguida, esperar que ele termine de aparecer antes de abrir o controlador de navegação. Isso garante que a animação de retrocesso (pop-up reverso) tenha tempo suficiente para terminar antes de retroceder. Mesmo com as animações desligadas, ainda tem que esperar senão você obterá o erro.
Seu código para VC2 deve ser o seguinte. (Rápido)
fonte
A situação pode ocorrer se você estiver adicionando uma visualização com um controlador de visualização modal como uma visualização secundária. Melhor usar:
Basicamente, está dizendo que o ciclo de vida da visualização não é otimizado para os viewControllers que você está tentando exibir.
fonte
Tenho o mesmo problema ao tentar fazer:
em uma função como
- (void) popUpToLevelTwo;
, e colocar umreturn;
no final da função resolve o problemafonte
Eu também tenho isso em
Mudei o
YES
para umNO
e isso resolveu o problema.fonte
Eu tenho o mesmo problema quando usei o método pop do Navigationcontroller No meu aplicativo eu uso uma lógica separada para o controlador de navegação, então evitei o uso da barra de navegação e ela está sempre escondida. Então eu uso um modo de exibição personalizado e notificação para lidar com o botão de fundo e seus eventos. observadores de notificação são registrados e não removidos. Portanto, a notificação é disparada duas vezes e cria o erro mencionado acima. Verifique seu código minuciosamente para obter tais falhas
fonte
Pelo que vale a pena, recebi o mesmo erro ao não incluir uma chamada para
[super viewDidLoad:animated]
na minhaviewDidLoad
substituição.fonte
Eu também tive esse problema quando toquei em um botão de um NIB. Acontece que eu acidentalmente conectei o botão para enviar um evento a dois métodos IBAction, cada um dos quais executou um pushViewController: animado:
fonte
Eu implementei uma lógica para esperar o envio de
UIViewController
até que todos os dados fossem baixados. Houve um erro nesta lógica que fez com que oUIViewController
muito cedo enquanto havia outra chamada de API em andamento.Fez com que o mesmo
UIViewController
fosse empurrado duas vezes peloUINavigationController
e deu este aviso.fonte
Razão Para mensagem: Esta mensagem são exibidas se e somente se você está empurrando / apresentando outro controlador Vista
viewWillAppear
,loadView
,init
ouviewDidLoad
método de corrente View ControllerManeira de remover a mensagem de erro: Mova seu código de envio / apresentação para o
viewDidAppear
método para resolver o problemafonte
Swift 4
Meu problema era que eu estava apresentando outro VC antes que o atual terminasse de ser renderizado.
A solução foi apresentar meu nextVC após um rápido atraso.
O QUE VOCÊ NÃO DEVE FAZER
O QUE VOCÊ DEVERIA FAZER
fonte
Eu tive esse problema quando me esqueci de definir Break; depois de inserir a visualização em uma instrução switch!
Como aqui:
fonte
a razão por trás do erro "Chamadas não balanceadas para iniciar / encerrar transições de aparência" é quando você navega | segue duas vezes ao mesmo tempo
fonte
uma solução seria,
fonte
Você pode se deparar com isso se tentar dispensar um UIViewController antes de terminar de carregar.
Eu tinha essa mensagem no console e estava me concentrando inteiramente no UIViewController que apresentava o novo UIViewController, sem sucesso. Eu finalmente descobri que o problema estava no UIViewController que eu estava apresentando e estava se fechando porque o usuário não estava conectado à conta.
Espero que isso ajude alguém.
fonte
Esta foi uma pergunta difícil para mim: eu ignorei
sem substituir:
no meu controlador de navegação raiz da janela. então, um controlador de navegação infantil reclamou ao empurrar outro controlador de visualização com o aviso mencionado acima. O aviso não era dos piores, o grande problema era que ali não era mais chamado o delegado do controlador de navegação infantil. weired.
fonte
No meu caso eu estava buscando
NSData
a partir deNSURL
dentro 'viewDidLoad
' método.fonte