Digamos que eu tenha uma UIButton
visualização em uma guia no meu aplicativo para iPhone e quero que ela abra uma guia diferente na barra de guias do TabBarController
. Como eu escreveria o código para fazer isso?
Estou assumindo que descarrego a exibição existente e carrego uma exibição de guia específica, mas não sei como escrever o código exatamente.
iphone
objective-c
ios
uitabbarcontroller
rottendevice
fonte
fonte
Respostas:
Experimente este código em Swift ou Objective-C
Rápido
Objetivo-C
fonte
-setSelectedViewController:
.Observe que as guias são indexadas a partir de 0. Portanto, o seguinte snippet de código funciona
vai para a quinta aba no bar.
fonte
Minha opinião é que
selectedIndex
ou usarobjectAtIndex
não é necessariamente a melhor maneira de mudar a guia. Se você reordenar suas guias, uma seleção de índice codificado pode interferir no comportamento anterior do aplicativo.Se você tiver a referência de objeto do controlador de exibição para a qual deseja alternar, poderá:
Claro que você deve ter certeza de que
myViewController
realmente está na lista detabBarController.viewControllers
.fonte
Você pode simplesmente definir a
selectedIndex
propriedade no UITabBarController para o índice apropriado e a exibição será alterada assim como o usuário tocou no botão tab.fonte
selectedIndex
também não funciona para mim com índices> 4, masselectedViewController
funciona.Eu tentei o que o Disco S2 sugeriu, estava próximo, mas foi o que acabou funcionando para mim. Isso foi chamado após a conclusão de uma ação dentro de outra guia.
fonte
Para os casos em que você pode mover as guias, aqui está um código.
fonte
Como a solução de Stuart Clark, mas para Swift 3:
Use-o assim:
Observe que meu tabController está vinculado a viewControllers atrás de navigationControllers. Sem navigationControllers, ficaria assim:
fonte
Queria poder especificar qual guia foi mostrada por classe, em vez de indexar, pois achei que era uma solução robusta e menos dependente de como você conecta o IB. Não encontrei as soluções da Disco ou da Joped para funcionar, então criei este método:
você chama assim:
Espero que isto ajude alguém
fonte
Meu problema é um pouco diferente. Preciso mudar de um childViewController no 1º tabBar para o home viewController do 2º tabBar. Simplesmente uso a solução fornecida no andar de cima:
No entanto, quando alternou para a página inicial da 2ª guiaBar, o conteúdo fica invisível. E quando depuro, viewDidAppear, viewWillAppear, viewDidLoad, nenhum deles é chamado. Minhas soluções é adicionar o seguinte código no UITabBarController:
fonte
Use no
AppDelegate.m
arquivo:fonte
Como a solução de Stuart Clark, mas para Swift 3 e usando o identificador de restauração para encontrar a guia correta:
Use-o assim ("Humanos" e "Robôs" também devem ser definidos no storyboard para um viewController específico e seu ID de restauração, ou use o Storyboard ID e marque "use storyboard ID" como ID de restauração):
Observe que meu tabController está vinculado a viewControllers atrás de navigationControllers. Sem navigationControllers, ficaria assim:
fonte
fonte