Aprendiendo Objetive-C para IOS (Dia 21)

Guion del blog de curso de Objetive-C para IOS – DIA 21
—————————————————————————–
CREANDO UNA APLICACION COMPLETA, Y SUBIENDOLA AL APPSTORE PARTE 3:
Seguimos con la aplicacion para el calculo del metabolismo basal.
Vamos a ver como podemos apañarnoslas para que al pulsar en informe, nos habra la vista de detalles, y nos muestre informacion extra dependiendo de nuestros resultados

Lo primero que vamos a hacer, es crearnos una nueva clase, basandones en UIVIewCOntroller, a la que llamaremos informeViewController.
A la vista del informe, le cambiaremos su class identifier, por informeViewController
Creamos todos los outlets, y el codigo quedara algo asi:
nota: resultado y sexo, son dos variables que nos creamos para lo que viene a continuacion
//
//  informeViewController.h
//  Metabolismo Basal
//
//  Created by david fraj blesa on 26/06/12.
//  Copyright (c) 2012 __MyCompanyName__. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface informeViewController : UIViewController<ADBannerViewDelegate>{
}
@property float resultado;
@property int sexo;
@property (weak, nonatomic) IBOutlet UILabel *lblBasalNormal;
@property (weak, nonatomic) IBOutlet UILabel *lblSexo;
@property (weak, nonatomic) IBOutlet UILabel *lblActividadNormal;
@property (weak, nonatomic) IBOutlet UILabel *lblActividadPoca;
@property (weak, nonatomic) IBOutlet UILabel *lblActividadModerada;
@property (weak, nonatomic) IBOutlet UILabel *lblActividadIntensa;
@end
————-
Y aqui vemos el fichero  informeViewController.m:
//
//  informeViewController.m
//  Metabolismo Basal
//
//  Created by david fraj blesa on 26/06/12.
//  Copyright (c) 2012 __MyCompanyName__. All rights reserved.
//
#import «informeViewController.h»
@implementation informeViewController
@synthesize resultado;
@synthesize sexo;
@synthesize lblBasalNormal;
@synthesize lblSexo;
@synthesize lblActividadNormal;
@synthesize lblActividadPoca;
@synthesize lblActividadModerada;
@synthesize lblActividadIntensa;
– (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}
– (void)didReceiveMemoryWarning
{
    // Releases the view if it doesn’t have a superview.
    [super didReceiveMemoryWarning];
    
    // Release any cached data, images, etc that aren’t in use.
}
#pragma mark – View lifecycle
/*
// Implement loadView to create a view hierarchy programmatically, without using a nib.
– (void)loadView
{
}
*/
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
– (void)viewDidLoad
{
    [super viewDidLoad];
    
    
    
    //Escribimos el metabolismo basal
    lblBasalNormal.text=[NSString stringWithFormat:@»%f calorias», self.resultado];
    
    //Escribimos el sexo y l actividad segun sexo
    if(self.sexo==0){
        lblSexo.text=@»Hombre»;
        lblActividadPoca.text=[NSString stringWithFormat:@»Poca actividad: %f calorias», self.resultado*1.2];
        lblActividadNormal.text=[NSString stringWithFormat:@»Actividad normal: %f calorias», self.resultado*1.55];
        lblActividadModerada.text=[NSString stringWithFormat:@»Actividad moderada: %f calorias», self.resultado*1.77];
        lblActividadIntensa.text=[NSString stringWithFormat:@»Actividad intensa: %f calorias», self.resultado*2.1];
        
    }else{
        lblSexo.text=@»Mujer»;
        lblActividadPoca.text=[NSString stringWithFormat:@»Poca actividad: %f calorias», self.resultado*1.2];
        lblActividadNormal.text=[NSString stringWithFormat:@»Actividad normal: %f calorias», self.resultado*1.56];
        lblActividadModerada.text=[NSString stringWithFormat:@»Actividad moderada: %f calorias», self.resultado*1.64];
        lblActividadIntensa.text=[NSString stringWithFormat:@»Actividad intensa: %f calorias», self.resultado*1.82];
    }
    
    
}
– (void)viewDidUnload
{
    [self setLblBasalNormal:nil];
    [self setLblSexo:nil];
    [self setLblActividadNormal:nil];
    [self setLblActividadPoca:nil];
    [self setLblActividadModerada:nil];
    [self setLblActividadIntensa:nil];
    [super viewDidUnload];
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
}
– (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    // Return YES for supported orientations
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
@end
————-
Como vemos, estamos dando por supuesto que «resultado» contiene el numero de calorias calculadas, y «sexo», contiene el sexo elegido, pero como se lo pasamos desde
el principal al informe??
Lo primero que tenemos que hacer es darle un identificador al segue que hemos creado al pulsar en el boton informe.
Para eso vamos al storyboard, y pinchamos en el dibujito del segue. Yo he elegido como nombre de indentificador «segueInforme»
Una vez hecho esto, vamos a añadir el siguiente metodo ANTES la ultima linea de principalViewController.m donde pone @end.
en principalViewController.m, tenemos que añadir #import «informeViewController.h»
//Con esto, le pasamos a la vista lo que queramos. Hemos tenido que importar en la linea de arriba, el informeViewController.h
– (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    //Vamos a ejecutar lo que sea, solo en el caso que el identificador del segue, coincida con el que estamos pulsando.
    if([segue.identifier isEqualToString:@»segueInforme»]){
        //Creamos una instancia de DetailViewController. Por eso hemos importado antes
        informeViewController *informe =segue.destinationViewController;
        
        //Le damos el valor a la propiedad
//AQUI ESTA LO IMPORTANTE
//ASI LE ESTAMOS DANDO LOS VALORES DE ESTA PROPIEDADES, Y POR ESO PODRA REALIZAR LOS CALCULOS
        informe.resultado=[lblResultado.text floatValue];
        informe.sexo=sexoActual;
    }
    
    
    
}
————-
Esto es todo por hoy!!
Mañana mas!!
Un saludo
————-
nota: Esto es no es curso propiamente dicho, es un diario de autoaprendizaje de objetive-c, que me sirve para afianzar conocimientos, y de paso, tener un diario de referencia, con ejemplos propios de uso del lenguaje.
————-