Pergunta

Eu quero carregar uma ponta que não é uma visão em um UITabViewController. Aqui está o que eu tenho agora e ele não está funcionando, mas deve dar uma idéia do que eu quero:

- (IBAction)PlaylistButtonPressed:(id)sender
{
    MusicPick *music = [[MusicPick alloc] initWithNibName:@"MusicPick" bundle:nil];

    [self.view addSubview:music.view];

    [music release];    
}

Quando você pressiona um botão na vista, a ideia é carregar outra ponta, MusicPick, que será carregado como um subview, pegar alguma coisa e voltar direito de aqui. Qualquer ajuda é apreciada, ou novas idéias.

Foi útil?

Solução

Para adicionar um pouco mais detalhadamente.

Você pode adicionar em vista uma visão de UIViewController existente usando addSubview, ou empurrando um controlador para a visão do UITabBarController. Neste último caso, o UITabBarController deve ser [ter sido] um UINavigationController com um RootViewController.

Eu suspeito, é isso que você quer dizer. Portanto, você faria algo como o seguinte.

- (IBAction)PlaylistButtonPressed:(id)sender
{
    // Load UIViewController from nib
    MusicPick *music = [[MusicPick alloc] initWithNibName:@"MusicPick" bundle:nil];

    // Add to UINavigationController's stack, i.e. the view for this UITabBarController view
    [self.navController pushViewController:music animated:YES];

    // Release music, no longer needed since it is retained by the navController
    [music release];   
}

Isso pressupõe que você ter um UINavigationController como uma visão em sua UITabBarController e é chamado NavController.

Se você quiser apenas adicionar um UIView a vista do UIViewController na UITabBarController (por exemplo, sobreposição), então você pode apenas usar addSubview como você já descobriu, não UINavigation controlador necessário.

Outras dicas

Você não pode adicionar um subexibição diretamente a um UITabBarController. A forma como um desses controladores de obras é armazenando uma lista de UIViewControllers e exibindo cada um deles em uma guia. Mas eles não são realmente subviews, per se. Você realmente não modificar o próprio controlador de barra de abas sempre, exceto para atualizar esta lista.

Uma vez que você parece querer fazer é apresentar uma visão temporária para permitir que o usuário selecione algumas opções que vão afetar algo no controlador de barra de abas, eu sugiro que você apresentar esta vista do seu bico como uma visão modal < em> sobre os pontos de vista com guias. Dê uma olhada de UIViewController presentModalViewController:animated: e métodos dismissModalViewControllerAnimated: . Assumindo MusicPick é uma subclasse de UIViewController, apenas passá-lo para este método depois de ter sido alocado (como você fez isso em sua primeira linha de código acima), e UIKit vai cuidar do resto. Lembre-se de liberar essa instância MusicPick quando você está feito puxando os valores selecionados ou dados inseridos pelo usuário a partir dele.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top