pushviewcontroller crahses
-
22-09-2019 - |
Pergunta
Estou tentando pressionar uma nova visão no meu controlador de navegação usando:
-(IBAction)switchPage:(id)sender
{
MyTableViewController *myTableView = [[CMyTableViewController alloc] initWithNibName:@"MyTableView" bundle:[NSBundle mainBundle]];
[myTableView release];
[self.navigationController pushViewController:myTableView animated:YES];
}
Estou enfrentando o seguinte erro:
2010-02-25 21:19:57.717 CoC[3399:20b] *** -[UIViewController switchPage:]: unrecognized selector sent to instance 0xf1a660
2010-02-25 21:19:57.718 CoC[3399:20b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[UIViewController switchPage:]: unrecognized selector sent to instance 0xf1a660'
Solução
Você está lançando um objeto que você apenas alocou, o que não faz sentido.
MyTableViewController *myTableView = [[CMyTableViewController alloc] initWithNibName:@"MyTableView" bundle:[NSBundle mainBundle]];
[myTableView release];
Libere o MyTableView depois de empurrá -lo para a pilha
Outras dicas
Ligue para o lançamento depois de empurrar.
2010-02-25 21: 19: 57.717 COC [3399: 20B] * **-[UIViewController Switchpage:]: Seletor não reconhecido enviado à instância 0xf1a660
Seu acidente não por causa do código o que você mencionou. Mas há um bug no seu código como liberação e depois push. Mude como:
-(IBAction)switchPage:(id)sender
{
MyTableViewController *myTableView = [[CMyTableViewController alloc] initWithNibName:@"MyTableView" bundle:[NSBundle mainBundle]];
[self.navigationController pushViewController:myTableView animated:YES];
[myTableView release];
}
Eu acho que o objeto que está chamando de "Método de Switchpage:" está tendo algum problema. Verifique ou mostre a invocação deste método para qualquer ajuda
Atenciosamente, Manjunath
Acima está tudo bem, quando o controlador de subview foi empurrado para a pilha da navegação, a contagem de retenção deve ser aumentada e você deve liberá -la após a operação de push.
Tem certeza de que não precisa trocar as duas últimas linhas? Primeiro controlador de push, depois solte -o não visa versa ... :)
Como mencionado anteriormente, você libera o View Controller antes de pressioná -lo. Quando você o empurra para o controlador de navegação, a contagem de retenção é aumentada e você pode liberá -lo.
-(IBAction)switchPage:(id)sender
{
MyTableViewController *myTableView = [[MyTableViewController alloc] initWithNibName:@"MyTableView" bundle:[NSBundle mainBundle]];
[self.navigationController pushViewController:myTableView animated:YES];
[myTableView release];
}