ios - Navegación dentro de un UIPopoverController
objective-c ipad (2)
No tienes un controlador de navegación en tu controlador de popover, por lo que el método self.navigationController pushViewController
no funcionará. Prueba esto a continuación:
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
{
CalendarCell *cell = (CalendarCell *)[collectionView cellForItemAtIndexPath:indexPath];
UINavigationController *insidePopoverNavigationController = [[UINavigationController alloc] initWithRootViewController:[SummaryViewController new]];
UIPopoverController *popC = [[UIPopoverController alloc] initWithContentViewController:insidePopoverNavigationController];
[popC setPopoverContentSize:CGSizeMake(320, 400)];
[self setPop:popC];
[[self pop] presentPopoverFromRect:[cell frame]
inView:collectionView
permittedArrowDirections:UIPopoverArrowDirectionAny
animated:YES];
}
Créditos adicionales: Raica Dumitru Cristian
Tengo un UIPopoverController
que consiste en una vista de tabla. Este controlador emergente se mostró bien, y ya configuré el delegado didSelectRowAtIndexPath
bien.
En este momento, quiero hacer una transición al "controlador de vista detallada" en función del elemento de la tabla en el que se hace clic. Luego, en la vista de destino, tiene el botón Atrás como pushViewController
pero no funciona bien. No navegará en la vista detallada Controlador. Este es mi didSelectRowAtIndexPath
:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[tableView deselectRowAtIndexPath:indexPath animated:YES];
DetailSummaryViewController *detailVC = [[DetailSummaryViewController alloc] initWithNibName:@"DetailSummaryViewController" bundle:nil];
[self.navigationController pushViewController:detailVC animated:YES];
}
Este es mi método popupover
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
{
CalendarCell *cell = (CalendarCell *)[collectionView cellForItemAtIndexPath:indexPath];
UIPopoverController *popC = [[UIPopoverController alloc] initWithContentViewController:[SummaryViewController new]];
[popC setPopoverContentSize:CGSizeMake(320, 400)];
[self setPop:popC];
[[self pop] presentPopoverFromRect:[cell frame]
inView:collectionView
permittedArrowDirections:UIPopoverArrowDirectionAny
animated:YES];
}
Esa navegación no funcionará, pero si NSLoging el índice seleccionado funciona bien. ¿Hay algún paso en la configuración de la navegación que me extrañe?
cuando creas UIPopoverController, en lugar de configurar MyViewController dentro de UIPopoverController, debes establecer un UINavigationController
UINavigationController *insidePopoverNavigationController = [[UINavigationController alloc] initWithRootViewController:myViewController];
popoverController = [[UIPopoverController alloc] initWithContentViewController:insidePopoverNavigationController];
......
[popoverController presentPopoverFromRect:... etc];