como criar loop infinito no controlador de navegação como o aplicativo Instagram no iphone?
-
13-12-2019 - |
Pergunta
estou desenvolvendo um aplicativo que teria muitas subvisões, como o fluxo de instagram
e picyou
tipo de aplicativo de rede social, o fluxo é imagem-> imagem detalhada-> qualquer comentário-> nome de usuário-> seguinte-> nome de usuário-> nome de usuário da imagem-> imagem-> imagem detalhada-> qualquer comentário-> nome de usuário-> seguinte-> nome de usuário -> nome de usuário da imagem-> caramba, isso é infinito nunca para .....
e nunca recebe aviso de memória ou trava por problema de memória...
estou usando o controlador de navegação, mas mesmo assim, depois de algum tempo de navegação, alterando alguns viewcontrollers, ocorre um erro como este *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Pushing the same view controller instance more than once is not supported (<ViewController: 0x6d97110>)'
eu quero fazer o mesmo ao pressionar voltar, você também receberá todos os dados de volta.você tem alguma ideia de como fazer assim.?
Solução
UINavigationController suporta automaticamente esse comportamento que você está descrevendo.Memória eficiente e potencialmente infinita.Cada vez que você quiser passar de uma parte do seu aplicativo para outra, basta usar um código semelhante a este.
ViewController *vc = [[ViewController alloc] init];
//customize ViewController
[self.navigationController pushViewController:vc animated:YES];
Portanto, se você quiser passar de uma foto para uma visualização de detalhes da foto, basta pressionar o controlador de visualização de detalhes da foto quando o botão for pressionado.Mesmo que você já esteja em um controlador de visualização de detalhes de fotos, você pode enviar outro dessa classe.Apenas certifique-se de criar uma instância separada.A julgar pelo seu erro, acho que esse é o seu problema agora.
Também achei melhor criar um inicializador personalizado para esses tipos de controladores de visualização.Para ver os detalhes da foto, use algo como.
-(id)initWithPhoto:(Photo*)photo;