/ / Tentando passar dados entre controladores de barra de guias - ios, objetivo-c, tabview

Tentando passar dados entre controladores de barra de guias - ios, objective-c, tabview

Estou tentando passar alguns dados entre minhas visualizações emuma barra de guias. minha primeira visão é capaz de carregar os dados da minha classe de modelo e manipulá-los. Mas quando eu bato na segunda ou terceira guia no meu controlador de barra de guias, os dados não são passados. Aqui está como estou tentando passar esses dados.

-(void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController{

if (tabBarController.selectedIndex == 1){
HashTagTableViewController *hash [[HashTagTableViewController alloc]init];
hash.userArray = feed.userArray;
}else if (tabBarController.selectedIndex == 2){
PhotoTagTableViewController *photo = [[PhotoTagTableViewController alloc]init;
photo.userArray = feed.userArray;

}

}

feed é o nome da instância do meu modeloclasse que criei no controlador de exibição atual. Estou tentando evitar várias instâncias da classe model, pois ela precisa fazer várias chamadas para uma API. Tudo o que estou tentando fazer é passar o feed.userArray às diferentes visões a serem manipuladas de maneira diferente.

Respostas:

3 para resposta № 1

Não crie controladores de exibição neste método. O UITabBarController cria automaticamente todos os controladores de exibição na inicialização. Tente isso:

-(void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController{
if (tabBarController.selectedIndex == 1){
HashTagTableViewController *hash = (HashTagTableViewController *) viewController;
hash.userArray = feed.userArray;
}else if (tabBarController.selectedIndex == 2){
PhotoTagTableViewController *photo = (PhotoTagTableViewController *)viewController;
photo.userArray = feed.userArray;
}
}

0 para resposta № 2

Você está criando uma nova instância do ViewController. Em vez disso, você precisa obter o controlador de exibição selecionado da matriz ViewController do TabBarController. Alterei seu código. Verifique-o abaixo.

NOTA:

Resolva o erro de ortografia / nomes dos métodos. Porque eu escrevi isso no bloco de notas. Não está no xcode.

-(void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
if([viewController isKindOfClass: [HashTagTableViewController class]])
{
HashTagTableViewController *hash = (HashTagTableViewController) viewController;
hash.userArray = feed.userArray;
}
else if([viewController isKindOfClass: [PhotoTagTableViewController class]])
{
PhotoTagTableViewController *photo = (PhotoTagTableViewController) viewController;
photo.userArray = feed.userArray;
}
}