Mostrando entradas con la etiqueta IOS. Mostrar todas las entradas
Mostrando entradas con la etiqueta IOS. Mostrar todas las entradas

jueves, 20 de febrero de 2014

IOS - TableView

En esta ocasión voy a montar un Ejemplo de un Table View básico en IOS

Para ello lo primero que necesitamos es abrir el XCode y crear un proyecto nuevo


Una vez creado nuestro nuevo proyecto iremos a nuestro StoryBoard


Y arrastraremos asta el un nuevo TableView Controller


para poder ver algo como lo siguiente


Una vez lo tengamos, crearemos una nueva clase:


Y veremos algo así:


Después de darle a Next tenemos que teclear el nombre de la clase que vamos a crear y deberemos seleccionar la clase de la que queremos heredar UITableViewController 


El siguiente paso sera vincular nuestra vista con la clase que acabamos de crear, para ello en nuestro StoryBoard seleccionaremos el TableViewController y a la derecha lo vincularemos con nuestra clase, como vemos en la imagen de abajo:



Ahora es un buen momento para dar el número de secciones que tiene la celda que utilizaremos, también en nuestra table view; en nuestro ejemplo tan solo usaremos una, como vemos en la imagen de abajo.



llegados a este punto deberemos vincular la celda con el identificador que usaremos en nuestro código, para ello seleccionaremos nuestra celda, y en el campo de identificador escribiremos Cell, ya que es el nombre que nos darán por defecto, si queremos darle otro identificador también podremos, pero habrá que cambiarlo también en el código.


Ahora solo nos queda cambiar 4 cosillas en nuestro código, para que quede tal que así:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{

    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{

    return 20;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";

        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
        cell.textLabel.text = @"www.rogamainformatica.es";
    
    return cell;
    
    
}

Tan solo necesitamos cambiar
en el método numberOfSectionsInTableView que nos de vuelva 1
en el método numberOfRowsInSection pondremos que nos devuelva 20, lo cual sera el número de celdas que usaremos.
Y  en cellForRowAtIndexPath teclearemos:
    static NSString *CellIdentifier = @"Cell";

        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
        cell.textLabel.text = @"www.rogamainformatica.es";
    
    return cell;

En donde únicamente declaramos el identificador de la celda y le asignamos un texto

Podéis ver el vídeo con este mismo ejemplo en menos de 5 minutos aquí debajo



Como siempre podeis descargar el codigo desde : IOS Ejemplo de TableView

martes, 4 de febrero de 2014

IOS - Declaración e implementación de métodos

En nuestro ejemplo crearemos un nuevo proyecto con una SingleView para agilizar.

Una vez Creado, nos iremos a nuestro ViewController.h y copiaremos lo siguiente:
-(void)nombreDelMetodoConParametro1:(NSString *)parametro1 andParametro2:(NSString *)parametro2;

Con esta simple linea hemos declarado nuestro método; paso a explicarlo:
-(void)
Con esto decimos que es un método de objeto y que no devuelve nada, que solo ejecuta una serie de sentencias que mas adelante programaremos.
Si quisiéramos declarar un objeto de clase lo haríamos sustituyendo el - por un +

En resumen:
  • -método de objeto
  • +método de clase
(void) No devuelve nada, solo ejecuta, si le ponemos algún tipo devariable será lo que nos devuelva NSString, NSNumber …

Lo siguiente que nos encontramos es: nombreDelMetodoCon

Lo cual no es ni más ni menos que el nombre del método
Ahora nos encontramos con Parametro1:
Debe ser un texto descriptivo del parámetro que solicitamos

Y lo siguiente es: (NSString *)parametro1
Lo que nos encontramos entre () solo es el tipo de dato que vamos a pedir parametro1 es el nombre de la variable que vamos a utilizar dentro de nuestro método.

Casi acabando nos encontramos con andParametro2:(NSString *)parametro2;
En donde andParametro2: Debe ser un texto descriptivo del segundo parámetro(NSString *)parametro2; al igual que con parametro1 pedimos el tipo de dato y damos el nombre de la variable que vamos a utilizar dentro del método.

Ahora vamos a nuestro ViewController.m
Y allí copiaremos lo siguiente:
//Implementacion del metodo
-(void)nombreDelMetodoConParametro1:(NSString *)parametro1 andParametro2:(NSString *)parametro2{
    NSLog(@"%@", parametro1);
    NSLog(@"%@", parametro2);
}

que vemos es lo mismo que hemos declarado en el .h tan solo que entre llaves hemos sacado 2 NSLog, uno para cada parámetro

Dentro del - (void)viewDidLoad Copiaremos lo siguiente
[self nombreDelMetodoConParametro1:@"Texto de Ejemplo1" andParametro2:@"Texto de ejemplo para el segundo ejemplo"];


En donde hemos escrito entre paréntesis por ser un método su implementación y todo ello precedido por self que es el símil a this en otros lenguajes, y se utiliza para referirnos a todo lo que tenemos en nuestra propia clase, seguido de la descripción de los parámetros se los pasamos

Os dejo el código para descargar desde mi GiHub:https://github.com/rogama/IOS---Declaraci-n-e-implementaci-n-de-metodo.git

miércoles, 8 de enero de 2014

Constantes - IOS

para usar las constantes en IOS, crearemos una nueva clase en nuestro proyecto, llamada Constantes, lo cual con creara 2 nuevos archivos, constantes h, y constantes.m, ambos archivos los ordenaremos en un nuevo group llamado constantes (esto ultimo es opcional, solo se usa para mantener mas ordenado el código)

Las declaraciones de nuestras variables, en este caso constantes, se efectuaran en el *.h, en nuestro ejemplo en Constantes. h

es una buena practica usar: FOUNDATION_EXPORT para que nuestras constantes puedan usarse en otros lenguajes

FOUNDATION_EXPORT NSString * const kTexto;

después en el ,m les daremos el valor

NSString * const kTexto = @"Esto es un texto";

Deberemos importarlo en la clase que necesitemos usarlo con #import "Constantes.h" si el import lo hacemos en el .m de una clase estada disponible solo en el .m, si lo hacemos en el .h estada disponible en el .m y .h de la clase en concreto.

#import "Constantes.h"

Si necesitamos importarlo en todo el proyecto tenemos un archivo dentro de Supporting Files, llamado: nombre_de_nuestro_proyecto-Prefix.pch
en donde podremos hacer el import.
Para importar un framework escribiremos su nombre entre < > pero para hacerlo de una clase " "

Dejo el proyecto de ejemplo en:
github: Ejemplo de Constantes en IOS


martes, 7 de enero de 2014

Convertir a int - IOS

al igual que en otros lenguajes tenemos la funcion parseInt() para convertir un texto ,u otro tipo de dato a entero, en IOS, debemos usar:

intValue

un ejemplo de uso seria:

int entero = 0;
NSNumber *enteroClase = [[NSNumber alloc] initWithInt:21];
entero = [enteroClase intValue];

lunes, 6 de enero de 2014

Implicit conversion of 'int' to 'id' is disallowed with ARC - IOS

Este error suele darnos en un código de este tipo:

int entero = 21;
NSMutableDictionary *diccionario = [[NSMutableDictionary alloc] init];
[diccionario setObject:entero forKey:@"numero"];
Es debido a que no podemos meter un int (ni ningún dato de tipo escalar) en un Dictionary, para hacerlo deberemos usar un NSNumber, asi que cambiado:

int entero = 21;
por NSNumber *entero = [[NSNumber alloc] initWithInt:21];

Lo tenemos arreglado.

PD: lo mismo nos ocurrira en un array

lunes, 23 de diciembre de 2013

Los bucles While y do- while - IOS

Los bucles While y do- while son muy similares también a los del resto de lenguajes. Su sintaxis es:

    while (<#condition#>) {
        <#statements#>
    }
    
    do {
        <#statements#>

    } while (<#condition#>);

Un par de ejemplos son:
    BOOL condicion = YES;
    
    while (!condicion) {
        NSLog(@"Condicion falsa");
        condicion = YES;
    }
    
    do {
        condicion = NO;
        NSLog(@"Condicion verdadera");
    } while (condition);

Podeis descargarlos desde:

bucle for in - IOS

El bucle for in en IOS es muy similar al de otros lenguajes. Su sintaxis es:

    for (<#type *object#> in <#collection#>) {
        <#statements#>

    }

Aqui os dejo un ejemplo

    NSArray *array =[[NSArray alloc] initWithObjects: @"texto1", @"texto2",@"texto3",@"texto4", nil];
    
    for (NSString *cadena in array) {
        NSLog(@"%@", cadena);
    }


Podeis descargarlo desde:
IOS-bucle-for-in

Bucle for - IOS

El bucle for en IOS es muy similar al del resto de lenguajes. Su sintaxis es:

    for (<#initialization#>; <#condition#>; <#increment#>) {
        <#statements#>

    }

Aqui os dejo un ejemplo:

    for (int i = 0; i<5; i++) {
        NSLog(@"Entra: %i", i);
    }

Aqui os dejo un ejemplo:

conditional switch - IOS

El conditional switch también es muy similar al de otros lenguajes, su sintaxis es:

    switch (<#expression#>) {
        case <#constant#>:
            <#statements#>
            break;
            
        default:
            break;

    }

Aqui teneis un ejemplo:

    int caso = 3;
    
    switch (caso) {
        case 1:
            NSLog(@"Estoy en el caso 1");
            break;
        case 2:
            NSLog(@"Estoy en el caso 2");
            break;
        case 3:
            NSLog(@"Estoy en el caso 3");
            break;
        default:
            NSLog(@"Caso sin identificar");
            break;
    }

Os dejo un ejemplo en:

Condicional If - IOS

El conditional if es muy similar al de cualquier otro lenguaje. Su sintaxis es la siguiente:

if(condicion){
    codigo a ejecutar
}

podemos verlo en los siguientes ejemplos:
    BOOL correcto = NO;
    
    if (correcto) {
        NSLog(@"correcto");
    }else{
        NSLog(@"No es correcto");
    }
    
    int numero = 2;
    if (numero < 2) {
        NSLog(@"Numero menor que 2");
    }else if (numero>2){
        NSLog(@"Numero mayor que 2");
    }else{
        NSLog(@"Numero es igual a 2");
    }



Un ejemplo en:
IOS-condicional-if

Tipos de variables en IOS

Tipos escalares

  • int Valor entero comprendido entre +/- 2.147.483.647.
  • float Valor en coma flotante comprendido entre +/- 16.777.216.
  • double Valor en coma flotante comprendido entre +/- 2.147.483.647
  • long Valor entrero con un tamaño que varia entre 32 bits y 64 bits, dependiendo de la arquitectura
  • long long Valor entero de 64 bits.
  • char Un unico caracter. Tecnicamente se representa como un int
  • BOOL Valor booleano, que puede tener los valores SI o NO.
  • NSInteger Cuando se compila en una arquitectura de 32 bits es lo mismo que un int, y cuando se hace en 64 bits puede tener un valor comprendido entre 0 y 2^64.
  • NSUInteger Cuando se compila en una arquitectura de 32 bits es lo mismo que un unsigned int y cuando se hace en 64 bits puede tener un valor comprendido entre 0 y 2^64.
La forma de declarar e inicializar una variable es:
Tipo Nombre = valor;

ej: int numeroEntero = 2;

Podemos ver un ejemplo en:
Tipos de variables

Otros tipos de datos son:


  • NSString Cadena de caracteres
Ej: NSString *cadena = @"cadena de caracteres";
    Se declara con el * delante ya que es un objeto, y estamos apuntando a su posicion de memoria.
    Se inicializa con el @ delante ya que es una forma abreviada de hacerlo.
EJ: cadena = [NSString stringWithFormat: @"Entero: %i", entero];
Es una forma de asignar valor al string concatenando variables

  • NSArray
  • NSMutableArray Coleccion ordenada de objetos accesibles mediante un indice
en un NSArray NO podemos añadir nuevos elementos.

Ej: NSArray *array = [[NSArray alloc] initWithObjects:@"Texto 1", @"texto2", nil];
    Hay que poner un nil (nulo) al final para avisar de que el array termina ahi,
    El alloc se usa para reservar el espacio en memoria

Si solo quisieramos declararlo sin datos:
NSArray *array = [[NSArray alloc] init];

Ej: NSMutableArray *mutableArray = [[NSMutableArray alloc] init];
[mutableArray addObject:@"texto 1"];

Es la forma de añadir nuevos objetos al MutableArray, al array NO se puede

  • NSDictionary
  • NSMutableDictionary Nos permite crear estructuras de datos sin necesidad de crear subclases
Con el Dictionary pasa lo mismo que con el array, si no es mutable no se puede modificar a posteriory

Ej: NSDictionary *diccionario = [[NSDictionary alloc] initWithObjectsAndKeys:cadena, @"int",nil];
NSLog(@"%@" ,[diccionario objectForKey:@"int"]);
NSMutableDictionary *mutableDictionary = [[NSMutableDictionary alloc] init];

[mutableDictionary setObject:cadena forKey:@"String"];
[mutableDictionary setObject:cadena forKey:@"String2"];
[mutableDictionary setObject:cadena forKey:@"String3"];

NSLog(@"%@",mutableDictionary); 
    Imprime el dictionary entero

Podemos ver un ejemplo en:
Otros Tipos de variables