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'
Foi útil?

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];
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top