example custom bar iphone uinavigationcontroller uinavigationbar

iphone - custom - navigation controller swift 4 example



UINavigationController no muestra elementos de UINavigationBar (1)

Dado en el clavo.

Entonces resulta que estaba haciendo algo estúpido.

Agregué un método pop en una categoría interna a NSMutableArray. Ese método no estaba apareciendo correctamente. UINavigationBar también debe agregar un método pop a NSMutableArray. Mi buggy fue ganar y romper el pop de UIBarItem.

Tengo un problema donde mi UINavigationBar no muestra sus elementos cuando UINavigationController muestra un controlador de vista.

He echado un vistazo a las pilas observadas de la siguiente manera:

  • El número esperado de controladores de navegación asignados (instrumentos registrados)
  • Hay la cantidad correcta de controladores en la pila. (registro de depuración)
  • Los elementos de navegación no se están reventando. (registro de depuración)

Esto es lo que hice.

Hice algunas declaraciones de registro en el método viewDidLoad después de llamar a super.

NSLog(@"%@", [self navigationController]); NSLog(@"%@", [[self navigationController] viewControllers]); NSLog(@"%@", [[self navigationController] navigationBar]); NSLog(@"%@", [[[self navigationController] navigationBar] items]);

Después de que se carga la vista inicial.

2009-10-09 16:42:51.706 Bob[11657:207] <UINavigationController: 0x243bb0> 2009-10-09 16:42:51.720 Bob[11657:207] ( <MediaBrowser: 0x2354c0> ) 2009-10-09 16:42:51.742 Bob[11657:207] <UINavigationBar: 0x243e50; frame = (0 20; 320 44); autoresize = W; layer = <CALayer: 0x243ed0>> 2009-10-09 16:42:51.758 Bob[11657:207] ( <UINavigationItem: 0x242d60> )

Todo se ve bien. Presione el segundo controlador.

2009-10-09 16:43:11.800 Bob[11657:207] -[MediaBrowser beginLoading] [Line 261] 2009-10-09 16:43:12.320 Bob[11657:207] -[MediaBrowser loadingComplete] [Line 269] 2009-10-09 16:43:12.587 Bob[11657:207] <UINavigationController: 0x243bb0> 2009-10-09 16:43:12.654 Bob[11657:207] ( <MediaBrowser: 0x2354c0>, <MediaBrowser: 0x2c1cc0> ) 2009-10-09 16:43:12.685 Bob[11657:207] <UINavigationBar: 0x243e50; frame = (0 20; 320 44); autoresize = W; layer = <CALayer: 0x243ed0>> 2009-10-09 16:43:12.734 Bob[11657:207] ( <UINavigationItem: 0x242d60>, <UINavigationItem: 0x2c63b0> )

Nuevamente nada inesperado aquí. Presione el tercer controlador.

2009-10-09 16:43:19.934 Bob[11657:207] -[MediaBrowser beginLoading] [Line 261] 2009-10-09 16:43:20.388 Bob[11657:207] -[MediaBrowser loadingComplete] [Line 269] 2009-10-09 16:43:20.928 Bob[11657:207] <UINavigationController: 0x243bb0> 2009-10-09 16:43:20.962 Bob[11657:207] ( <MediaBrowser: 0x2354c0>, <MediaBrowser: 0x2c1cc0>, <MediaBrowser: 0x4027e20> ) 2009-10-09 16:43:21.003 Bob[11657:207] <UINavigationBar: 0x243e50; frame = (0 20; 320 44); autoresize = W; layer = <CALayer: 0x243ed0>> 2009-10-09 16:43:21.039 Bob[11657:207] ( <UINavigationItem: 0x242d60>, <UINavigationItem: 0x2c63b0>, <UINavigationItem: 0x4028880> )

Todo bien. Ahora vamos a pop un controlador

2009-10-09 16:43:26.935 Bob[11657:207] <UINavigationController: 0x243bb0> 2009-10-09 16:43:26.945 Bob[11657:207] ( <MediaBrowser: 0x2354c0>, <MediaBrowser: 0x2c1cc0> ) 2009-10-09 16:43:26.964 Bob[11657:207] <UINavigationBar: 0x243e50; frame = (0 20; 320 44); autoresize = W; layer = <CALayer: 0x243ed0>> 2009-10-09 16:43:26.977 Bob[11657:207] ( <UINavigationItem: 0x242d60>, <UINavigationItem: 0x2c63b0>, <UINavigationItem: 0x4028880> )

Humm. Algo va mal. El controlador se ha reventado, pero el elemento de navegación todavía está allí. Para risitas vamos a empujar nuevamente.

009-10-09 16:44:05.878 Bob[11657:207] <UINavigationController: 0x243bb0> 2009-10-09 16:44:05.908 Bob[11657:207] ( <MediaBrowser: 0x2354c0>, <MediaBrowser: 0x2c1cc0>, <MediaBrowser: 0x407eb00> ) 2009-10-09 16:44:05.951 Bob[11657:207] <UINavigationBar: 0x243e50; frame = (0 20; 320 44); autoresize = W; layer = <CALayer: 0x243ed0>> 2009-10-09 16:44:05.996 Bob[11657:207] ( <UINavigationItem: 0x242d60>, <UINavigationItem: 0x2c63b0>, <UINavigationItem: 0x4028880>, <UINavigationItem: 0x407f280> )

La pila del controlador se ve bien, la pila de elementos de navegación tiene muchos problemas. Vamos a hacer estallar una última vez.

2009-10-09 16:44:17.770 Bob[11657:207] <UINavigationController: 0x243bb0> 2009-10-09 16:44:17.776 Bob[11657:207] ( <MediaBrowser: 0x2354c0>, <MediaBrowser: 0x2c1cc0> ) 2009-10-09 16:44:17.785 Bob[11657:207] <UINavigationBar: 0x243e50; frame = (0 20; 320 44); autoresize = W; layer = <CALayer: 0x243ed0>> 2009-10-09 16:44:17.793 Bob[11657:207] ( <UINavigationItem: 0x242d60>, <UINavigationItem: 0x2c63b0>, <UINavigationItem: 0x4028880>, <UINavigationItem: 0x407f280> )

Entonces la pila del controlador está bien. Los elementos de navegación, por otro lado, tienen algunos problemas.

Estoy perplejo. Estoy seguro de que estoy haciendo algo raro / raro / incorrecto, pero maldígame si puedo verlo. La única manipulación que estoy haciendo es preparar (a través de mis controladores, propiedad del elemento de navegación) un derecho de barra de artículo personalizado.

Si llegaste tan lejos, gracias. Pensaré en dónde podría ir desde aquí.