Envolver un UIViewController en un UINavigationController

Me gustaría que mi controller de vista tenga su propia barra de navigation. Encuentro que esto es más fácil que mostrar / ocultar la barra de navigation existente. El siguiente código está funcionando. ¿Es esto un anti-patrón o es una práctica relativamente común?

MyViewController *viewController = [[MyViewController alloc] init] autorelease]; UINavigationController *wrapper = [[[UINavigationController alloc] initWithRootViewController:viewController] autorelease]; [self.navigationController presentViewController:wrapper animated:YES completion:nil]; 

Para presentar un controller de vista modal con una barra de navigation y su propia stack de navigation, el código que publicaste es exactamente correcto. Lo único de lo que debes tener cuidado es empujar un segundo UINavigationController a la stack de un controller de nav existente, eso te causará problemas.

Cualquier UIView estática en la que necesite tener una barra de navigation que voy a crear en Interface Builder. Como presentas un viewController de manera modal (supongo), si necesitas o no un UINavigationController completo, debes decidirlo. Mientras no termines presionando una raíz de control de un browserController dentro de otro control de navigation, lo que crearía una barra de navigation debajo de la primera, no es gran cosa.

Cuando presente un formulario de tipo de "inicio de session" o algo así, que tendrá un button "Listo" y "Cancelar", solo crearé un XIB con estos elementos y lo presentaré.

Si está buscando una manera rápida de hacer todo esto en código, no hay nada malo con lo que está haciendo. Tendrás fácil acceso a tintColor y título. Puedes hacer esto en IB pero tendrás que tener una IBOutlet para que todos tus objects se conecten.