Saltar al contenido

Tab Bar Controller en Objective-C -Ejemplo- (Video)

Aprende a usar un Tab Bar Controller en Objective-C y a gestionar cada una de sus vistas por separado, con un vídeo y el código para mostrar fecha y hora.

Para descargar el proyecto de esta entrada pulsar AQUI.

En este tutorial se va a mostrar cómo trabajar con un Tab Bar Controller, y cómo trabajar de forma independiente con cada una de las vistas que componen este Tab Bar Controller. En este video-tutorial se realizará la siguiente aplicación. La tercera vista de este tutorial, corresponde al siguiente tutorial: NSTimer en Objective-C -Ejemplo- (Video).

tabBar Controller jarroba

A continuación se muestra el video del proyecto realizado:

A continuación mostramos los métodos que hemos utilizado para obtener la fecha y la hora en la app realizada en modo de ejemplo:

Código para obtener la fecha actual:

// cojo la fecha de hoy
NSDate *hoy = [NSDate dateWithTimeIntervalSinceNow:0];

// La doy Formato y la guardo en el NSString fecha para imprimirlo
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"dd-MMMM-yyy"];
NSString *fecha = [dateFormat stringFromDate:hoy];

Código para obtener la hora. Para que se muestre cada segundo, se debe de utilizar un timer que llame cada medio segundo (más o menos) a este método:

-(void) setHora{
    // cojo la fecha de hoy
    NSDate *hoy = [NSDate dateWithTimeIntervalSinceNow:0];

    // Calculo la hora, minutos y segundos
    NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
    NSDateComponents *dateComponents = [gregorian components:(NSHourCalendarUnit  | NSMinuteCalendarUnit | NSSecondCalendarUnit) fromDate:hoy];
    NSInteger horas = [dateComponents hour];
    NSInteger minutos = [dateComponents minute];
    NSInteger segundos2 = [dateComponents second];

    NSString *hora = [NSString stringWithFormat:@"%02i:%02i:%02i",horas, minutos, segundos2];
}

«Tab Bar Controller en Objective-C -Ejemplo- (Video)», de Ricardo Moya en jarroba.com, con licencia Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0. Obra registrada en Safe Creative.

Ricardo Moya

Me dedico profesionalmente al Machine Learning y al Big Data. Me gusta aprender tecnologías nuevas y explicarlas de la mejor manera posible en esta web.

Te puede interesar

Comentarios (8)

  1. Antonio de Jesus Cortes Lagunes

    Richard que tal disculpa, necesito que este tab bar aparezca en el lado izquierdo de la pantalla, estoy trabajando con xamarin.ios, puedes darme alguna idea de como hacerlo, no se si me recomiendes mejor algun UITableview 

  2. Jesus

    Muchas gracias por tu ayuda Richard, voy a ver si hago pruebas y si lo consigo ya os comento, basicamente lo que quiero es que se carge la pantalla que no esta en el tab bar y permanezca estatica con los tabs cargados en la parte inferior, la navegacion por los tab bar seria manual, lo dicho voy a probar y os comento como se da, muchas gracias

    Saludos

  3. Jesus

    Lo primero muchas gracias por contestar Richard, quisiera poner una pantalla por defecto en un Tab Bar controller, de forma que cargue siempre por defecto. Actualmente la he tenido que añadir como un tab Home extra, que es la que carga por defecto al ser la primera, pero eso me rompe la estética del diseño, es decir, necesito cinco tabs y una pantalla inicial que se carge siempre por defecto pero no encontre otra forma de hacerlo que añadirlo como un tab nuevo.

    Ejemplo :

    Tab bar controler —> con cinco tabs / Perfil / Mensajes / Radar / Alertas / chat
    Aparte de estos necesito que por defecto se cargue otra vista que es el home pero que no se pierdan los tabs anteriores y la unica forma que he visto de hacerlo es añadirlo como un nuevo tab, pero esto de rompe la estetica que me marcan, es posible cargar una imagen o viewcontroller en un Tab Bar Controller, si por defecto no se le puede asociar ninguna clase .m par implementar código?.

    No se si me explique bien Richard
    Muchas gracias
    Un Saludo

    1. Ricardo Moya Jarroba.com

      Hola Jesus. Supongo que lo que quieres es que se cargue al principio una vista por defecto en la que no tenga el tab bar y luego que se cargue el tab bar. Si es eso lo que quieres te debes hacer una vista por defecto y luego que cargue el tab bar. Si es esto lo que quieres, mira el siguiente tutorial : http://jarroba.com/pasar-de-un-viewcontroller-a-otro-automaticamente-iphone/ en el que se carga una vista, en tu caso la vista por defecto y luego se carga pasado un tiempo otra vista que en tu caso esa segunda vista deberia tener el tab bar. Nose si es esto lo que quieres, pero es lo que he podido entender.

      Si aun asi no te he responido a la pregunta me sigues diciendo, pero vamos todo esto es cuestion de ir probando (ensayo y error).

      SL2

  4. Jesus

    Hola muchas gracias por el Tutorial

    Quiero que salga una imagen en el tab bar controller que no este asociada a ninguna de las cinco tabs que tengo creadas, como podría hacerlo??, seria cambiar el comportamiento normal del tab bar, para que no salga de primeras ninguna de las pantallas de los tabs creadas y si una imagen con botones independiente

    Muchas gracias de antemano

    Un Saludo

    1. Ricardo Moya Jarroba.com

      Hola Jesus. No entiendo muy bien tu pregunta, te refieres a que los Tab Bar no sean estáticos y sean dinámicos (eso creo que no se puede hacer) o te refieres a que no te aparezca de primeras el tab bar. Si haces el favor ponme un ejemplo concreto de lo que quieres hacer, porque no he entendido bien tu pregunta.
      SL2

  5. Mauricio

    Hola gracias por el video!

    Una consulta

    Como puedo pasar por ejemplo el dato de un label o otro label de otra pantalla?

    Saludos y gracias!

    1. Ricardo Moya Jarroba.com

      Hola Mauricio.
      Pasar el contenido de una pantalla a otra no puedes como tal. Solo puedes asignar atributos (variables) de una clase a otra. En este tutorial (http://jarroba.com/pasar-datos-entre-viewcontrollers-usando-storyboards-y-segues/) puedes ver como se hace.
      SL2

Deja un comentario


Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.