Xcode 4:Carregando um Nib em um método em um arquivo diferente
-
13-12-2019 - |
Pergunta
desculpe se esta pergunta é elementar, mas estou preso nesse bug nos últimos 2 dias e não consegui superá-lo.Estou usando o Xcode 4.3.2
Estou tentando carregar uma ponta chamada AController.xib em um método chamado "- (void) process" no arquivo chamado BController.m
Para ficar claro, copiei ./A/AController.xib (que é um UIView), ./A/AController.m, ./A/AController.h para o diretório ./B
Menciono isso apenas porque não tenho certeza se isso é importante para minha pergunta.
Atualmente, meu fluxo funciona como fluxos (o que pode ser meu problema):
- Uma visualização é carregada com um botão "comprar"
- o usuário clica no botão "comprar" que possui um IBOutlet chamado "buyNow"
- "buyNow" chama "buy", que então chama "process"
o processo então tenta carregar a ponta com o seguinte (opção 1):
AController *blá;para (objeto ID em pacote) {if ([objeto iskindofclass: [acontroller class]]) blá = (acontroller *) objeto;} assert (blá! = nil && "blá não pode ser nil");[self.view addSubView:blá];
O erro que recebo aqui é "Tópico 1:sinal sigabrt "em main.m eu também tentei (opção 2),
AController *myView = [[AController alloc] initWithFrame:self.view.bounds];
[self.view addSubview:myView];
[AController release];
E (opção 3)
AController * vc = [[AController alloc] initWithNibBundle:@"AController" bundle:nil]; [self.nc pushViewController:vc animated:NO];
Recebo o mesmo erro para todas as três opções.Cada opção foi tentada no método “process”."processo" está escrito em B.m.Alguém pode oferecer alguma ajuda para que eu possa descobrir isso?Qualquer orientação sobre o motivo pelo qual essas opções falharam seria muito útil para minha compreensão e seria muito apreciada.Obrigado por ajudar um novato!
Solução
Se AController
é um UIView
subclasse, ela não pode carregar um NIB.Verifique se é de fato um controlador, mas a partir do initWithFrame
e do jeito que você está adicionando em uma view, parece que não está, ou está sendo tratado incorretamente.