Pergunta

UIBarButtonItem *rButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh target:self action:NULL];

rButton.action = @selector(refreshAction);
self.navigationItem.rightBarButtonItem = rButton;
[rButton release];

O código acima fino trabalha para criar um botão e adicioná-lo à barra de navegação, mas quando clico no botão que trava o aplicativo com um EXC_BAD_ACCESS. Se eu comentar rButton.action = @selector (refreshAction); clicando no botão não vai fazer nada, mas ele não falhar qualquer um.

- (void)refreshAction {
    NSLog(@"refreshAction");
}

Este código é um método viewDidLoad do TableViewController que é empurrado para a pilha navigationController do método NavigationViewController viewDidLoad.

Eu passei provavelmente 3 horas a tentar chegar a este trabalho, sem sucesso.

Foi útil?

Solução

Como o gerenciamento de memória usual era o culpado. Carregando o tableViewController do navigationController:

NearbyTableViewController *tableController = [[[NearbyTableViewController alloc] initWithNibName:@"NearbyTableViewController" bundle:nil] autorelease];
self.nearbyTableController = tableController;   

[self pushViewController:self.nearbyTableController animated:YES];
[tableController release];

lançando um conjunto de objetos de disparo automático ... deve ser o erro mais comum no gerenciamento de memória. Excluindo essa linha [liberação tableController] resolveu o problema

Outras dicas

Qualquer sorte se você especificar @selector(refreshAction) quando você cria o botão, ou seja:.

UIBarButtonItem *rButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh target:self action:@selector(refreshAction)];

Talvez o destino não são salvas se você não especificar também a ação para o inicializador.

Eu não sou exatamente 100% certo porque seu código não funciona, mas definindo o seletor diretamente no construtor funciona:

UIBarButtonItem *rButton = [[UIBarButtonItem alloc] 
    initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh   
                         target:self 
                         action:@selector(refreshAction)];
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top