Pregunta

Estoy siguiendo la aplicación CoreDatarecipes para Modaly que muestra la pantalla Agregar cuando quiero agregar un nuevo elemento. Sin embargo, no puedo hacer que la barra se muestre en la parte superior para que pueda presionar 'Listo' o 'Cancelar'.

En el XIB llamando al controlador modal tengo el botón + vinculado para deslizar modalmente el controlador a través de IB.

Tengo el siguiente en mi controlador modal

self.navigationItem.title = @"Add";

    self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Cancel" style:UIBarButtonItemStyleBordered target:self action:@selector(cancel)];
    self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Save" style:UIBarButtonItemStyleDone target:self action:@selector(save)];
    self.navigationController.navigationBarHidden = NO;

En mi ViewDidload

El controlador modal se muestra bien, excepto que no hay barra, por lo que no puedo dejar esa pantalla.

¿Fue útil?

Solución

Debe agregarlo antes de que se presente el Popover.

Donde crea el Popover modal, primero debe crearlo dentro de un Uinavigation Controller.

Entonces, haz lo siguiente.

 PopoverView *foo = [[PopoverView alloc] initWithNibName:@"PopoverView" bundle:nil];
 // Here you pass through properties if you need too.
 // ...
 UINavigationController *navC = [[UINavigationController alloc] initWithRootView:foo];
 [foo release];

 [self.navigationController presentModalViewController:navC animated:YES];

Eso le dará a la vista modal la barra de navegación que está tratando de editar.

Otros consejos

Alternativamente, podrías mantener tu segue de guión gráfico. En XCode, seleccione el controlador de vista al que está intentando hacer la transición e incrustarlo en un controlador de navegación.

Ahora en la carga ViewDid de ese controlador de vista, agregue:

self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Cancel" style:UIBarButtonItemStyleBordered target:self action:@selector(cancel)];

y, por último, la devolución de llamada:

- (void)cancel {
    [self dismissModalViewControllerAnimated:YES];
}

O si solo necesita el aspecto de la barra, no exactamente su funcionalidad, puede arrastrar la barra de navegación (Uinavigationbar) o el control de la barra de herramientas (Uitoolbar) desde el panel de la biblioteca de medios a su vista y ir desde allí.

Tenía una situación similar por la cual estaba cargando un UITableViewController en un Contenerview. El Contenererview estaba dentro de UIViewController que se presentaba de manera modal.

Yo, como tú, necesitaba la barra de navegación para tener un título y un botón de cancelación/cancelación.

Después de desbordar la pila, finalmente hice esto -

Arrastré un UIView como el primer elemento en la vista de la tabla en el IB. Esto tomó automáticamente una altura de 44 pts y se rompió a la cima. También cambió mi primera sección hacia abajo.

Arrastré un Uibonton (botón hecho) dentro de esta vista. Creó un iBoutlet y llamó

    [self dismissViewControllerAnimated:YES completion:nil];

Descargo de responsabilidad:

1) Esta barra de navegación falsa se desplazará junto con la vista de tabla. 2) Esta podría no ser una solución para lo que Bot ha pedido, pero es una opción para otros que podrían estar buscando algo similar.

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