Pergunta

Eu tenho um aplicativo para iPhone baseado em navegação. Quando você pressiona uma célula na Tabelaview, um novo UIViewController é empurrado para a pilha de navegação. Neste controlador de exibição, estou definindo um titleView personalizado no método ViewDidload:

- (void)viewDidLoad {
    [super viewDidLoad];

    // Setup custom navigation title
    [self setTitle:@"Mediaportal"];
    navItem = [[NavigationBarTitleItemViewController alloc] initWithNibName:@"NavigationBarTitleItem" bundle:nil];
    [navItem setTitle:[theServer name]];
    [navItem setSubTitle:@""];
    [self.navigationItem setTitleView:navItem.view];

…
}

Depois de voltar para o rootViewController:

[self.navigationController popToRootViewControllerAnimated:YES];

O aplicativo trava com o seguinte erro (nszombieEnabled = sim):

*** -[CALayer retain]: message sent to deallocated instance 0x5a5fd80

Pelo que posso ver, o rootViewController ainda tenta acessar o TitleView personalizado, que foi resolvido com o segundo controlador de exibição. Depois de comentar a parte personalizada do TitleView no meu código, o aplicativo funciona. Tentei definir o NavigationItem.titleview para NIL (como encontrado no Apple Docs) antes que o segundo ViewController seja desalocado, mas isso não ajuda.

Você tem uma dica o que posso fazer para evitar esse acidente?

Obrigado, Mark.

Foi útil?

Solução 2

Finalmente encontrei a solução para isso (bastante simples). Eu tenho que alocá -lo e iniciar o Navitem por meio de sua propriedade, então ele está sendo retido:

self.navItem = [[NavigationBarTitleItemViewController alloc] initWithNibName:@"NavigationBarTitleItem" bundle:nil];

Outras dicas

Eu tive exatamente o mesmo erro há um mês, exatamente a mesma situação. Isso me deixou louco.

Descobri que o viewcontroller que eu estava estourando também não havia sido desalocado. Eu tinha uma subclasse de UIBIBLETTON personalizada adicionada a essa visão, no entanto, que havia sido desalocada quando a segunda visão foi pressionada. Então, ao voltar, o UIBIBLETTON não estava lá.

Verifique a visualização para a qual você está voltando, para garantir que você não tenha nenhuma aula que está negociando ou está sendo lançada com autoridade sem saber.

Espero que isto ajude.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top