Question

Je veux charger une plume qui n'est pas une vue dans un UITabViewController. Voici ce que j'ai maintenant et il ne fonctionne pas, mais il devrait vous donner une idée de ce que je veux:

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

    [self.view addSubview:music.view];

    [music release];    
}

Lorsque vous appuyez sur un bouton dans la vue, l'idée est de charger une autre plume, MusicPick, qui charge un sous-vue, ramasser quelque chose et revenir tout de suite ici. Toute aide est appréciée, ou de nouvelles idées.

Était-ce utile?

La solution

Pour ajouter un peu plus de détails.

Vous pouvez ajouter une vue à la vue d'un UIViewController existant en utilisant addSubview, ou en poussant un contrôleur à la vue du UITabBarController. Dans ce dernier cas, le UITabBarController doit être [ont été] un UINavigationController avec un RootViewController.

Je soupçonne, c'est ce que vous voulez dire. Par conséquent, vous feriez quelque chose comme ce qui suit.

- (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];   
}

Cela suppose que vous avez une UINavigationController en vue dans votre UITabBarController et il est appelé NavController.

Si vous voulez juste ajouter un UIView à la vue de UIViewController dans le UITabBarController (par exemple superposition), alors vous pouvez simplement utiliser addSubview comme vous l'avez déjà compris, aucun contrôleur UINavigation nécessaire.

Autres conseils

Vous ne pouvez pas ajouter un sous-vue directement à un UITabBarController. La façon dont un de ces contrôleurs fonctionne est de stocker une liste de UIViewControllers et l'affichage de chacune d'entre elles dans un onglet. Mais ils ne sont pas vraiment subviews, par Sé. Vous ne modifiez pas vraiment le contrôleur de barre d'onglets lui-même jamais, sauf pour mettre à jour cette liste.

Depuis ce que vous semblez vouloir faire est de présenter une vue temporaire pour permettre à l'utilisateur de sélectionner certaines options qui affecteront quelque chose dans le contrôleur de barre d'onglets, je vous suggère de vous présenter ce point de vue de votre plume en vue modal < em> sur les vues à onglets. Jetez un oeil à UIViewController de presentModalViewController:animated: et dismissModalViewControllerAnimated: méthodes . Si l'on suppose MusicPick est une sous-classe de UIViewController, il suffit de passer à cette méthode une fois qu'il a été alloué (comme vous l'avez fait dans votre première ligne de code ci-dessus), et UIKit prendra soin du reste. Rappelez-vous de libérer cette instance de MusicPick lorsque vous avez terminé tirant les valeurs sélectionnées ou les données saisies par l'utilisateur de celui-ci.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top