Pergunta

Eu tenho uma página (digamos X) antes do controlador da barra de guias que usa o modelo segue para abrir o controlador da barra de guias.Além disso, a primeira tela do controlador da barra de guias é a mesma do X.

Quero passar dados do X para a primeira página do controlador da barra de guias.

Em breve, quero passar dados do controlador de visualização para a página do controlador da barra de guias com o storyboard segue.Existe algum método para isso?

Aqui está a solução;

    locationsHome* vc = [[locationsHome alloc] init];
    UITabBarController* tbc = [segue destinationViewController];
    vc = (locationsHome *)[[tbc customizableViewControllers] objectAtIndex:0];
Foi útil?

Solução

Foi assim que resolvi meu problema.Você pode passar dados de ViewController para TabBarController com este método.

Use este código dentro prepareForSegue método

locationsHome* vc = [[locationsHome alloc] init];
UITabBarController* tbc = [segue destinationViewController];
vc = (locationsHome *)[[tbc customizableViewControllers] objectAtIndex:0];

Assim:

-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{

    NSString * segueIdentifier = [segue identifier];
    if([segueIdentifier isEqualToString:@"tabbarGo"]){

        locationsHome* vc = [[locationsHome alloc] init];
        UITabBarController* tbc = [segue destinationViewController];
        vc = (locationsHome *)[[tbc customizableViewControllers] objectAtIndex:0];

        etc...

    }
}

Outras dicas

//if sent to First Tab of Tab Bar Controller
UITabBarController *tabBarController = segue.destinationViewController;
UINavigationController *navigationController = (UINavigationController *)[[tabBarController viewControllers] objectAtIndex:0];
createTeamViewController *controller = (createTeamViewController *)[[navigationController viewControllers] objectAtIndex:0];

controller.userProfile = self.userProfile;

Adicione uma propriedade ao controlador de visualização de destino (o controlador da barra de guias subclasse) e, em seguida, no controlador de visualização de origem, implemente prepareForSegue para passar informações para o controlador de destino.Você pode então ter o controlador de visualização de destino viewDidLoad para agir de acordo com os dados que lhe foram transmitidos no prepareForSegue do controlador de visualização de origem.

Para Rápido 2.2, tive que modificar a resposta aceita desta forma

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)
{
    if (segue.identifier == "userAccountSegue")
    {
        var firstTabViewController: UserAccountViewController = UserAccountViewController()
        let tabViewController: UITabBarController = segue.destinationViewController as! UITabBarController
        firstTabViewController = (tabViewController.customizableViewControllers![0] as! UserAccountViewController)
        firstTabViewController.userObj = arrayForTable![selectedIndex] as? User

    }
}

Observação :Dica para o recorte de código acima

  • Do utilizador é meu Modelo objeto que armazena informações do usuário
  • Meu controlador View segue está conectado ao TabViewContoller no storyboard com segue = "userAccountSegue"
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top