ios uinavigationcontroller uipopover

ios - ¿Cómo puedo hacer que UIPopoverPresentationController cambie el tamaño en la navegación emergente?



uinavigationcontroller (2)

Simplemente agregue su código siguiente ViewController

- (void) viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; self.navigationController.preferredContentSize = CGSizeMake(200, self.parentViewController.childViewControllers.lastObject.preferredContentSize.height-100); }

Aquí está el video . Espero que este sea el comportamiento que esperas obtener.

Estoy usando UIPopoverPresentationController para los UIPopoverPresentationController en una aplicación de iOS. Cuando un controlador de navegación en un popover empuja un nuevo controlador de vista, el popover cambia el tamaño al tamaño de Contexto preferredContentSize ese controlador de vista. Pero cuando el controlador de navegación saca un controlador de vista de la pila, el popover no cambia el tamaño al tamaño anterior. ¿Cómo puedo hacer que haga eso?

Posible duplicado de esta pregunta , pero para el UIPopoverPresentationController moderno.

Actualización: Vea aquí un código de ejemplo que ilustra el problema. Clonarlo y ejecutarlo en un simulador de iPad. Toque el botón Popover y obtendrá un popover con un controlador de navegación. Toque el elemento del botón de la barra de empuje y obtendrá un nuevo VC más alto en la pila (el tamaño está en la barra de navegación). Pop y no cambia de tamaño a lo que era.


Agregue esta línea:

self.navigationController.preferredContentSize = self.preferredContentSize;

a su método viewWillAppear: para que ahora se vea así:

- (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; if (self.navigationController) { UIBarButtonItem *item = [[UIBarButtonItem alloc]initWithTitle:@"Push" style:UIBarButtonItemStylePlain target:self action:@selector(onPush)]; self.navigationItem.rightBarButtonItem = item; self.navigationItem.title = NSStringFromCGSize(self.preferredContentSize); self.view.backgroundColor = [UIColor lightGrayColor]; self.navigationController.preferredContentSize = self.preferredContentSize; } }

Se asegurará de que el tamaño preferido del controlador de navegación se actualice cada vez que cambie el controlador de visualización visualizado. Lo probé en tu código de muestra y resolvió el problema.