objective-c ios ipad uitabbarcontroller uisplitviewcontroller

objective c - TabBarController y SplitViewController



objective-c ios (4)

Quiero que mi splitviewController se muestre dentro de un TabBarController . Desafortunadamente, primero decidí simplemente tener un SplitViewController y elegí la plantilla de apple. Ahora estoy en la posición inconveniente sin saber cómo agregarlo a una barra de pestañas.

Intenté varias cosas que se explicaron aquí en StackOverflow, pero el mejor resultado fue una pantalla negra con una barra de pestañas debajo de él :-(

Solo estoy luchando por encontrar una manera agradable y simple.

Código de mi Appdelegate :

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. // Add the split view controller''s view to the window and display. self.window.rootViewController = self.splitViewController; [self.window makeKeyAndVisible]; NSArray *searchPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); documentFolderPath = [searchPaths objectAtIndex: 0]; self.rootViewController.directoryPath = documentFolderPath; NSURL *docUrl = [launchOptions objectForKey:UIApplicationLaunchOptionsURLKey]; if ([docUrl isFileURL]) { NSString *path = [docUrl path]; self.detailViewController.currentFilePath = path; [self.detailViewController setDetails:path newFile:FALSE]; } return YES;


Editar:

Me di cuenta de que realmente querías una vista dividida dentro de la barra de tabulación. por documentación de apple, este es un no no. http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/iPadControllers/iPadControllers.html

Un controlador de vista dividida siempre debe ser la raíz de cualquier interfaz que cree. En otras palabras, siempre debe instalar la vista desde un objetoUISplitViewController como vista raíz de la ventana de su aplicación. Los paneles de su interfaz de vista dividida pueden contener controles de navegación, controladores de barra de pestañas o cualquier otro tipo de controlador de vista que necesite para implementar su interfaz.

Si aún desea usar una barra de pestañas, las cosas que escribí a continuación aún se aplican, pero su subvista no debe ser un controlador de vista dividida.

respuesta original:

crearías el controlador tabbar en el código, luego agregarías el controlador splitview como una de las pestañas. en su caso, self.splitViewController se convertirá en uno de los controladores de vista dentro de su controlador tabbar. No he intentado esto usando una aplicación de plantilla de Apple como punto de partida, pero déjala debería funcionar.

puede buscar tutoriales en uitabbarcontroller para obtener más información. Este parece prometedor: http://www.xcode-tutorials.com/uitabbarcontroller-and-uinavigationcontroller/

Y esto también es útil: http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UITabBarController_Class/Reference/Reference.html

aquí hay una muestra:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. UITabBarController *tabBarController = [[UITabBarController alloc] init]; //set tbconroller as root view controller of window [self.window setRootViewController:tabBarController]; //window retains controller so we can release [tabBarController release]; //create two view controllers UIViewController *vc1 = [[HypnosisViewController alloc] init]; UIViewController *vc2 = [[CurrentTimeViewController alloc] init]; //make an array containing these two view controllers NSArray *viewControllers = [NSArray arrayWithObjects:vc1,vc2,nil]; [tabBarController setViewControllers:viewControllers]; //the views are retained their new owners, so we can release [vc1 release]; [vc2 release]; [[self window] makeKeyAndVisible]; return YES; }

si está utilizando el constructor de interfaces, aquí hay algunos tutoriales más http://www.cimgf.com/2009/06/25/uitabbarcontroller-with-uinavigationcontroller-using-interface-builder/ o http: //www.mobisoftinfotech .com / blog / iphone / iphone-tabbar-uitabbarcontroller-tutorial /


¡Debes comprobar que IntelligentSplitViewController es todo lo que necesitas!

Agregando algunos controladores y diseño puede terminar con algo como esto:

PD : ¡De hecho, tengo una aplicación en la App Store que usa este controlador, así que vaya directo!



Acabo de resolver este problema, ya que se ha estado ejecutando en mi cabeza de fondo durante los últimos días. Puede tener tantas "vistas divididas" como desee dentro de un "UITabbarView" o vars versa, sin usar ningún código, pero si desea satisfacer a Apple y hacer que el controlador de vista dividida sea el controlador raíz, debe escribir una línea de código.

Entonces la carne está aquí.

  1. Crea un proyecto de vista única, o lo que quieras.
  2. En el Storyboard principal, arrastre y suelte el controlador de vista dividida.
  3. Arrastre la flecha de inicialización desde el "controlador de vista única" y asígnela a su "Controlador de vista dividida".
  4. Ahora, si ejecuta su proyecto, debería cargar la vista dividida.
  5. Crea una nueva subclase de archivos de Coca-Cola de "UISplitViewController", llámala como quieras.
  6. En "viewDidLoad" agrega la siguiente línea "self.preferredDisplayMode = .PrimaryHidden" // solo para ocultar la vista maestra
  7. Retroceda el guión gráfico principal Seleccione el controlador de vista dividida y conviértalo en el controlador de vista que acaba de crear.
  8. Ahora, elimine la "Vista" del controlador de vista de detalles (solo la vista)
  9. Busque la "Vista de contenedor" en la biblioteca de objetos, arrástrela y suéltela en el controlador de vista de detalles.
  10. Esto generará el controlador de visualización conectado a la "Vista de contenedor". Incrustar el controlador de vista generado en "Controlador de barra de pestañas". Ahora, tiene la vista de división conectada al controlador de la barra de pestañas.
  11. Su TabBarController debe tener un controlador de vista (elemento 1), reemplace la "vista" (solo vista) de este controlador con "ContainerView".
  12. Ahora arrastre y suelte el nuevo controlador de vista dividida de la "Biblioteca de objetos". Conecte el "ContainerView" en "Item 1" al nuevo "Controlador de vista dividida" agregado.
  13. Ahora, si lo recuerda, deberíamos tener un controlador de vista colgando en algún lugar, ya que creamos un proyecto de vista única, busque ese controlador y conéctelo al controlador de la barra de pestañas, de modo que ahora tiene 2 elementos.
  14. Repita el mismo proceso, reemplace la vista con "vista de contenedor" y agregue un nuevo controlador de vista dividida y conéctelo a esta historia.

Ahora, este Storyboard final debería verse más o menos así. De nuevo, no tiene que comenzar desde el controlador de vista Split, pero hice esto solo para que coincida con la recomendación de Apple.