Pregunta

quiero cargar una punta que no es una vista en un UITabViewController. Esto es lo que tengo ahora y no está trabajando, pero debe darle una idea de lo que quiero:

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

    [self.view addSubview:music.view];

    [music release];    
}

Cuando se pulsa un botón en la vista, la idea es cargar otra punta, MusicPick, que cargará como subvista, recoger algo y vienen de regreso a aquí. Cualquier ayuda es apreciada, o nuevas ideas.

¿Fue útil?

Solución

Para añadir un poco más de detalle.

Se puede añadir un objeto de vista de un UIViewController existente mediante addSubview, o empujando un controlador en la opinión del UITabBarController. En el último caso, el UITabBarController debe ser [han sido] un UINavigationController con un RootViewController.

sospecho, esto es lo que quiere decir. Por lo tanto deberías hacer algo como lo siguiente.

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

Esto supone que tiene una UINavigationController como una vista en su UITabBarController y se llama NavController.

Si lo que desea es añadir un UIView a la opinión del UIViewController en el UITabBarController (por ejemplo, superposición), a continuación, puedes utilizar addSubview como ya ha descubierto, sin UINavigation controlador necesario.

Otros consejos

No se puede añadir un subvista directamente a un UITabBarController. La forma en que uno de estos controladores funciona es mediante el almacenamiento de una lista de UIViewControllers y la visualización de cada uno de estos en una ficha. Pero en realidad no son subvistas, per se. En realidad, no modifica el controlador de la barra de pestañas en sí nunca, excepto para actualizar esta lista.

Ya que lo que parece que quieres que hacer es presentar una visión temporal para permitir al usuario seleccionar algunas opciones que afectarán a algo en el controlador de la barra de pestañas, me gustaría sugerir que presente este punto de vista de su semilla como una vista modal < em> más los separadores de vistas. Echar un vistazo a la UIViewController presentModalViewController:animated: y métodos dismissModalViewControllerAnimated: . Suponiendo MusicPick es una subclase de UIViewController, sólo tiene que pasar a este método después de que ha sido asignado (como lo hizo en su primera línea de código anterior), y UIKit se hará cargo del resto. Recuerde que debe liberar esa instancia MusicPick cuando haya terminado tirando de los valores seleccionados o los datos introducidos por el usuario de la misma.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top