viewControllers Tabbar em IB: Envie costume de inicialização?
-
03-07-2019 - |
Pergunta
aplicativo baseado em tabBarController My tem várias abas. Cada um tem uma classe personalizada viewController, a única diferença é a forma como a instância é inicializada. Existe uma maneira de fazer o Interface Builder enviar as guias diferentes parâmetros costume o init?
Atualmente eu estou fazendo a inicialização em viewWillAppear, mas para um monte de razões, faria sentido fazê-lo em IB, em vez de no código.
Todas as sugestões?
graças, Kelso
Solução
Interface Builder cria um arquivo de objetos que é unarchived quando você programa é executado. Você não pode realmente dizer IB para chamar métodos particulares.
Se você precisa para inicializar antes viewWillAppear:
é chamado, você pode fazê-lo em awakeFromNib
, que está garantido para ser chamado após todos os objetos tenham sido carregados e todas as tomadas foram conectados aos seus objectivos.
Se você quiser fazer a inicialização ainda mais cedo, você pode fazê-lo, substituindo initWithCoder:
(veja o protocolo NSCoding
para documentação). Eu não sei se ele está documentado em qualquer lugar, mas que é Designada inicializado para objetos que estão sendo decodificados a partir de um arquivo.
Em todos os itens acima, você não será capaz de receber parâmetros, mas no código que você deve ser capaz de acessar o que você precisa com algum uso criterioso de variáveis ??globais. Você também pode usar [[UIApplication sharedApplication] delegate]
para obter acesso ao seu objeto de delegação aplicação.
Outras dicas
Eu não acho que há alguma maneira de mudar o que métodos são chamados pelo tempo de execução IB quando a sua ponta está carregado. Se você descreveu o que você estava tentando realizar (ou seja, por que fazer a instalação em viewDidAppear não funciona para você), você pode obter uma sugestão de uma maneira melhor de lidar com a sua inicialização.