Programar para Iphone desde cero. UIButton. Nivel Tarzán.

16 June 2008

Recientemente he entrado a formar parte de este Blog. Debido a que poseo mucha menos experiencia y conocimiento que Antonio (el oráculo) he estado pensando como poder colaborar en la sección de ejemplos. Pues bien, me he dado cuenta de que quizás hay un hueco para mi, y es atender a esa gente que como yo quiere aprender a programar para Iphone pero esta un poco perdido porque nunca ha visto Objective-C.


Voy a realizar una serie de post exponiendo con todo detalle los progresos que logro en mi aprendizaje, eso si, describiendolo todo según mi particular manera de entender las cosas y empezaré desde el principio.


Empezamos:

En realidad ya deberiais haber empezado, leeros las secciones de "Hola Mundo" y "La antesala al desarrollo".


Explicación del ejemplo:

Pretendo realizar un programa que muestre en pantalla un boton (UIButton) que cuando sea pulsado cambie el texto que lo define de "NO" a "YES" y de "YES" a "NO". ¿Simple, verdad? Ya puse que esto era nivel de dominio del lenguaje Tarzán.


Creación del proyecto:


1.- Abrimos xcode.app y creamos un proyecto de tipo window.


Definición de Objetos y Acciones:


2.- Únicamente deberemos crear un Objeto, que será de tipo IUButton (Botón). Al crear el proyecto entre otras cosas nos aparecen dos archivos que definen la clase delegate (principal a mi entender). En el archivo.h declararemos los elementos.



Como es un Botón. Declararemos un Objeto (IBOutlet) de tipo botón en si y un IBAcción para la acción que realizaremos cuando se pulse el Botón. De la siguiente manera.



#import <UIKit/UIKit.h>
@class BOTONViewController;
@interface BOTONAppDelegate : NSObject <UIApplicationDelegate>
{
IBOutlet UIWindow *window;
IBOutlet id BOTON; //en lugar de id podría poner UIButton
BOOL pulsacion;
}
@property (nonatomic, retain) UIWindow *window;
- (IBAction) PULSAR_BOTON: (id) sender;
@end


Creación de interface y asignación de elementos:


3.- Ahora haremos doble click sobre el archivo MainWindow.xib. Y se habrirá el interface builder. Agregaremos un Objeto tipo UIButton a nuestra ventana. Quizás sería mejor hacerlo mediante vistas, pero eso ya sería nivel concursante de Gran Hermano.


El programa a sí mismo se pregunta, ¿qué objeto será este UIButton que acaban de poner en la ventana? Es decir, el programa no sabe que objeto es ese. Para informar a nuestro programa que el botón que acabamos de insertar es el IBOutlet que habíamos creado en el archivo.h, debemos posicionar el ratón sobre el archivo de nuestra app delegate, pulsamos la tecla control y seguido el botón izquierdo del ratón y sin soltarlo llevamos el ratón hasta ponerlo encima del objeto botón que habíamos insertado y soltamos (vemos que al hacer esto ha ido saliendo una línea azul, y también vemos como se selecciona el botón). Al soltar, nos pide que le asignemos un IBOutlet, que como solo tenemos uno es fácil. Le damos a BOTON (esta opción nos aparece ya que en el archivo.h pusimos IBOutlet id BOTON;).



Lo que acabamos de hacer significa que el botón que hemos insertado en la ventana para nuestro código va a ser la variable BOTON que es de tipo UIButton.


4.- Pero, ¿qué pasará cuando pulsamos el botón?. Nosotros queremos que lo que pase es que se ejecute un cierto código. Este código será el que haya en la función PULSAR_BOTON, que la hemos catalogado como IBAction para poder asignarsela mediante el interface builder al botón.


Ahora procedemos en sentido contrario para asignar la acción, con la tecla control pulsada vamos desde el botón hasta nuestra app delegate. Y seleccionamos PULSAR_BOTON.


Con esto estamos diciendole al programa que ejecute la función PULSAR_BOTON cuando el usuario pulse el botón al que se la hemos asignado. Tened en cuenta que varios elementos, incluso de distintos tipos, pueden tener asignada la misma IBAction.


Implementación de funciones:


5.- Si ejecutamos el programa ahora tal cual, aparecera el botón pero si lo pulsamos no hará nada. Ya que aun no hemos escrito que es lo que debe hacer la función PULSAR_BOTON.


Abrimos el archivo.m y vemos que ya tiene dos funciones escritas en él:



- (void)applicationDidFinishLaunching:(UIApplication *)application
{
// Override point for customization after app launch
[window makeKeyAndVisible];
pulsacion = NO;
}
- (void)dealloc
{
[window release];
[super dealloc];
}


La primera se ejecuta cuando se carga el programa. Y con ella estamos cargando la ventata principal. También inicializamos la variable "pulsacion".


Y la segunda es para liberar memoria a la hora de salir del programa.


Nosotros en el archivo.h tenemos definida la IBAction, y la añadiremos ahora en el archivo.m al final o donde querais:


- (IBAction) PULSAR_BOTON: (id) sender



{
if (pulsacion == NO)
{
[BOTON setTitle:@"YES" forState:0];
pulsacion = YES;
}
else
{
[BOTON setTitle:@"NO" forState:0];
pulsacion = NO;
}
}


Con esta función vamos alternando entre asignar "YES" o "NO" al título del botón, teniendo en cuenta su valor actual.

6.- Compilamos y ejecutamos el programa para comprobar el funcionamento.


Recomiendo que con el interface builder modifiqueis las distintas opciones del botón para aprender todas las posibilidades que os dá.


Otros Articulos de la serie:


Programar para Iphone desde uno. UIView. Nivel Piolín.


Programar para Iphone desde dos. UITextField. Nivel Barragán.


Programar para Iphone desde tres. NSMutableArray. Nivel Luis Aragonés.


Programar para Iphone desde cuatro. Controllers. Nivel Cantinflas.

Programar para Iphone desde cero. UIButton. Nivel Tarzán.

Comentarios recientes

  • 12 July 2012
    Aldo Bravo dijo:

    Hola, muy bueno el artículo! pero para los que necesitan un poco más de ayuda como yo, os recomiendo echar un vistazo a esta sitio de <a href="http://www.cocoaosx.com/cursos/" rel="nofollow">Programación para iPhone</a> Saludos.

  • 16 March 2011
    Carlos dijo:

    Hola, Encontré este cursillo: http://www.crearaplicacionesiphone.info Creo que es el mejor a comparación de todo lo gratuito que hay por la red. Espero le sirva.

  • 27 December 2010
    NeGRa dijo:

    Toño puedes probar http://www.gnustep.org/ o si no mirar si puedes hacerte un Hackintosh que es lo que tengo yo en casa en un AAO 150 :)

  • 24 December 2010
    Toño dijo:

    Hola!, Saben si hay alguna forma de que se pueda programar para IPhone desde Windows, o necesariamente necesito una Mac?.. Gracias de antemano!

  • 14 July 2010
    Alex dijo:

    Hola, primero gracias por contestar, y decir que se trataba de una crítica constructiva. Después de lo que dices, sigo pensando que hay lagunillas en el tutorial. PD: soy ingeniero informático, aunque nunca he tocado Objetive-C, no quiere decir que sepa manejarlo solo con mirar un tutorial, pero esperaba que este me ayudara más. Gracias de nuevo.

  • 09 July 2010
    Antonio dijo:

    Hola Alex No pretendemos publicar un manual profesional de programación para Objetive-C, sino una serie de consejos, ejemplos y pequeños trozos de código. Esto quiere decir, que además de esto, son necesarios una serie de conocimientos básicos, que en tu caso es probable que no tengas, así que te recomiendo que empieces por un manual básico de Objetive-C. Un saludo.

  • 09 July 2010
    Alex dijo:

    Hola, Me ha costado un montón entenderlo todo, al final lo conseguí. Yo debo ser un poco inútil, realmente deo ser muy inútil ya que no me he enterado de nada. Qué es eso de archivo.h y archivo.m, no menosprecio tú trabajo, pero podrías haber hecho las cosas más fáciles, has llamado a tu proyecto "Archivo"? pues pon que los ficheros en los que has trabajado son ArchivoAppDelegate.h y ArchivoAppDelegate.m PD: hay trozos del tutorial que no están demasiado bien explicados.

  • 28 February 2010
    blade666 dijo:

    Antes de nada, darte la enhorabuena por el tutorial, es de gran ayuda para los que estamos empezando. El paso 3, lo de arrastrar el fichero hacia el botón no me sale. Estando en el Interface Builder hago lo de pulsar control y sin soltar, arrastrar el fichero, pero no me deja arrastrarlo porque sale un menú justo al lado.

  • 14 April 2009
    Jorge Alcázar dijo:

    Yo no tengo ni idea de programación y es la primera vez que hago esto!! Claro que con este pedazo!! de tutorial! y con trabajo que me a costado. pero lo e conseguido, ahora a seguir trasteando con esta base!^^ y cuando digo ni idea es nada de nada de nada!!! y de ingles pelao! pero bueno me acabo de dar cuenta de que esto me está empezando a gustar y aunque con mi 0 conocimiento me cuesta muchisimo. alguien sabe como se empieza con esto de la programación? instituto? universidad? curso? y cual tendría que hacer si solo me interesa Mac y iPhone? de momento!... por cierto Mario yo lo puse así: IBOutlet id BOTON;

  • 21 March 2009
    Mario Jimenez dijo:

    hola exelente tutorial pero no logro hacer el paso 3 en el codigo pones IBOutlet id BOTON; //en lugar de id podría poner UIButton y en los comentario dices *BOTON cual de las 2 va?

  • 25 February 2009
    alex ochoa dijo:

    soy alex necesito de su ayuda borre completamente la memoria de mi iphone como podria figurarlo de nuevo alguien podria comunicarse conmigo por favor

  • 25 February 2009
    Gustavo dijo:

    Hola Soy nuevo por la web, y en el diseño de aplicaciones para Iphone, enhorabuena por los manuales. Solo comentar, que no tengo manera de referenciar el boton con el fichero .h de mi aplicación. Lo he hecho de todas las maneras posible, como indicas aquí y sacando el inspector de conexiones del interface builder. Saludos

  • 23 February 2009
    pequenionoa dijo:

    Xcode es gratuito al igual que el SDK para iphone. Se descarga de la página de Apple. Necesitarás un Mac con Leopard para programar para iphone. Saludos.

  • 23 February 2009
    Ariel dijo:

    Estimados, excelente artículo. Soy desarrollador, pero siempre dentro del mundo windows. He venido desarrollando applicaciones windows mobile, y ahora quiero meterme en el mundo apple (iphone en particular) Y tengo algunas preguntas "muy basicas" Que ambientes de trabajo me recomiendan? Donde los puedo bajar? Herramientas que me harian falta? Puedo seguir trabajando sobre mi computadora con Windows XP? muchas gracias de antemano

  • 18 February 2009
    Garri dijo:

    Estupendo tutorial, la verdad de las páginas más completas que he visto sobre este tema. He empezado hoy mismo a ver si me aclaro con el cocoa, pero me he quedado encasquillado donde se tiene que enlazar el botón con el appdelegate.h, ya que arrastro desde el botón del interface builder (saliendome la linea azul) hasta el fichero appdelegate.h y no pasa nada, no se que hacer. ¿Lo hago mal? Un saludo y muchas gracias.

  • 11 February 2009
    pequenionoa dijo:

    esta pregunta es mejor hacerla en el foro, de hecho alli ya esta contestada. pero en fin.... si es necesario. Tienes que contratar el programa de desarrolladores que vale 99 $

  • 11 February 2009
    victor dijo:

    para poder distribuir una aplicación en iphone es necesario alguna firma digital o así?.

  • 06 February 2009
    Condol dijo:

    Gracias por lo de las comillas dobles, estaba volviéndome loca ya, y no conseguía arreglarlo.

  • 18 January 2009
    oriki dijo:

    Buenas, los errores que comentaba Kle, error: syntax error before ‘@’ token error: syntax error at ‘OTHER’ token que por cierto espero haya resuelto ya, casi 2 meses despues :P puede ser por copiar y pegar, si a alguien le pasa que borre las dobles comillas de "YES" y "NO" y las vuelva a escribir. bye¡

  • 04 December 2008
    Luis Gracia dijo:

    Saludos, pero antes de esto? Vaya, para el que solo programó en Pascal ó Cobol, que tiene que empezar a aprender para luego programar en iphone. Veo que en la programación de iPhone hay librerías ó codigo de default pero el que esta empezando como distingue lo que es codigo escrito por el desarrollador y codigo de libreria del SDK. Alguien podría explicarlo?

  • 31 October 2008
    pequenionoa dijo:

    Pues si has seguido al pie de la letra el tutorial no deberia darte errores. Quizas sea algun ; que no has puesto. O en archivo .h no has declarado bien el IBOutlet UIButton *BOTON; saludos.

  • 31 October 2008
    klee dijo:

    Hola, al intentar ejecutar éste ejemplo me aparecen varios errores: error: syntax error before '@' token error: syntax error at 'OTHER' token -- y éste repetido varias veces antes de la línea [BOTON setTitle:@”YES” forState:0]; No se nada de programación para Mac OS X ni para iPhone así que no se qué puede ser. Saludos!

  • 30 August 2008
    pequenionoa dijo:

    El SDK del iphone solo esta disponible para Mac OSx. Saludos.

  • 30 August 2008
    despistao dijo:

    Hola! Una pregunta, el entorno de desarrollo... (alerta de pregunta obvia!) es de MAC? conoces alguna de windows?!

  • 18 August 2008
    pequenionoa dijo:

    Pues es raro, a nadie la ha dado problemas. Lo único que se me ocurre es que al vincular con interface builder no hayas seleccionado bien el boton que has tenido que añadir para poder hacer el vinculo con el IBOutlet id BOTON. Saludos.

  • 18 August 2008
    Miguel dijo:

    Hola, en primer lugar felicidades por el blog, me alegra ver uno de programación para el iphone para principiantes. Y en segundo, tengo un problema con una cosa: Paso 3.: "Al soltar, nos pide que le asignemos un IBOutlet, que como solo tenemos uno es fácil. Le damos a BOTON (esta opción nos aparece ya que en el archivo.h pusimos IBOutlet id BOTON;)." Debajo de Outlets solo me da la opción de viewController. Y que conste que he copiado y pegado el código en Boton.h gracias, un saludo.

  • 15 August 2008
    pequenionoa dijo:

    Francisco, esa es la típica pregunta que es mejor hacer en el foro. Saludos.

  • 15 August 2008
    Francisco dijo:

    Buenas noches una pregunta alguien sabe en que archivo y donde se guardan los mails en iphone

  • 13 August 2008
    pequenionoa dijo:

    De nada. Y a aprender todo el mundo se ha dicho.

  • 13 August 2008
    Francisco dijo:

    Mugras gracias por un totorial asi, me parece de lo mejor que hay en el medio, Un saludo desde Ecuador

  • 24 June 2008
    pinkerton dijo:

    Muchas gracias, al final me salio ayer a ultima hora de la noche que dije.. joder, esto tiene que ser sencillo. Pero estaba ofuscado con arrastrar el fichero desde el XCode en vez de desde el Interface Builder.

  • 24 June 2008
    pequenionoa dijo:

    Para el paso 4, tienes que estar en el interface builder. Pulsa la tecla control y mantenla pulsada, y luego pulsa el raton sobre un elemento y mantenlo pulsado y veras como sale la línea azul. Saludos.

  • 23 June 2008
    pinkerton dijo:

    Hola, Enhorabuena por el articulo. Ya podia ocurrirsele hacer esto a los de Apple. Sin embargo, no soy capaz a hacer el paso 4. No me funciona lo de "Para informar a nuestro programa que el botón que acabamos de insertar es el IBOutlet que habíamos creado en el archivo.h, debemos posicionar el ratón sobre el archivo de nuestra app delegate, pulsamos la tecla control y seguido el botón izquierdo del ratón y sin soltarlo llevamos el ratón hasta ponerlo encima del objeto botón que habíamos insertado y soltamos (vemos que al hacer esto ha ido saliendo una línea azul, y también vemos como se selecciona el botón). Al soltar, nos pide que le asignemos un IBOutlet, que como solo tenemos uno es fácil. Le damos a BOTON (esta opción nos aparece ya que en el archivo.h pusimos IBOutlet id BOTON;)". No me sale ni linea azul ni nada... Lo que hago es desde XCODE con ctrl o cmd (probe ambos pero ninguno va) y con el boton dl raton pulsado llevarlo hasta el boton de la window en el interface builder y soltar, pero no me funciona. Un saludo.

  • 22 June 2008
    Cómo programar para el iPhone nivel básico dijo:

    [...] Programar para Iphone desde cero. UIButton. Nivel Tarzán. [...]

  • 21 June 2008
    pequenionoa dijo:

    Si es con la ultima version del SDK para el Iphone. Y necesitas 10.5.3. Pero te debería funcionar con cualquier Template. Saludos

  • 21 June 2008
    Aenima dijo:

    Consulta que version de xcode usaste? porque en la que tengo yo no esta el template windows. No tengo la ultima porque no teno 10,5,3 aun

  • 18 June 2008
    Antonio dijo:

    Hola javialamo Llevas razón, y para el que no lo sepa, ponerle un icono a tu aplicación no es más que insertar un fichero llamado Icon.png con tu icono al directorio de tu aplicación. Saludos.

  • 18 June 2008
    Resident dijo:

    Gracias por el artículo, me ha servido de ayuda para entender algunas cosas que en los otros artículos se daban por echas y no era capaz de verlas un saludo.

  • 18 June 2008
    pequenionoa dijo:

    No te preocupes que no me cansaré, ya que es el nivel que tengo. jajajaja. Yo también estoy aprendiendo. Para cualquier duda puedes usar el foro. Saludos.

  • 18 June 2008
    javialamo dijo:

    Muy bueno!!! La mejor página hasta el momento sobre este tema y el artículo que mejor me está viniendo de momento!!! Pequenionoa, gracias. De verdad. Estaba desesperándome un poco... Espero impaciente la continuación, espero también que no te canses de artículos a este nivel para pasar a otros de más nivel.... porque si no no podré seguirlos igual. Así como sugerencia (porque me ha venido la duda al seguir el hello world) el detalle de como ponerle un icono a la aplicación, porque es una tonteria, pero gana mucho. Gracias de nuevo.

  • 16 June 2008
    pequenionoa dijo:

    Gracias, y si que esta bien que tu lo digas.

  • 16 June 2008
    Antonio dijo:

    No está bien que lo diga yo, pero excelente artículo, si señor.

Deja un comentario

Escrito por:

Administrador

Programar desde cero
iPhoneUIButtonNivelTarzan

Utilizamos cookies propias y de terceros para mantener la sesión o sus preferencias, recopilar estadísticas y proporcionar contenidos conforme a sus intereses. Si continua navegando, utiliza los servicios de la web o pulsa el botón, está aceptando su instalación y el uso que hacemos de ellas. Puede obtener más información sobre como revocar su consentimiento o cómo cambiar la configuración en este enlace.