En primer lugar, quiero reiterar mis disculpas hacia los usuarios de Leopard por los gazapos cometidos en la parte II de este tutorial. Gracias a un lector, Luis Paniagua (gracias de nuevo!), he encontrado un tutorial realmente bueno en ingl茅s y lo he traducido y adaptado.
As铆 que esta vez s铆: los pasos definitivos para Leopard (XCode 3.0)
- En tu proyecto de XCode, haz clic en Classes mientras pulsas Option y selecciona “Add File…”
- Elige “Objective-C Class” y ponle de nombre AppController.m. Aseg煤rate de que la casilla “Also create AppController.h” est谩 marcada.
- Abre AppController.h y a帽ade entre los corchetes el siguiente c贸digo:
IBOutlet NSTextField *clicks;
- Fuera de los corchetes escribimos el siguiente c贸digo:
- (IBAction)haceclick:(id)sender;
- Con estos dos 煤ltimos pasos, hemos definido el outlet y la acci贸n a las que enlazaremos los objetos pertinentes de la interfaz. Ahora, abre AppController.m y a帽ade las siguientes l铆neas de c贸digo entre @implementation y @end:
- (IBAction)haceclick:(id)sender
{}
- En XCode, abre la carpeta NIB Files de la lista en 谩rbol de la izquierda y haz doble click en MainMenu.nib. El archivo se abrir谩 en Interface Builder.
- Cuando Interface Builder haya cargado, selecciona el objeto NSObject y arr谩stralo a la ventana MainMenu.nib (la ventana donde se encuentra First Responder, Application, MainMenu… en vista de iconos). Ren贸mbralo a AppController.
- Abre el Inspector (Cmd-Shift-I). Haz click en tu objeto NSObject que renombraste como AppController y despu茅s haz click en la pesta帽a Identity del inspector.
- Cambia la clase al tipo “AppController”. Una vez hecho esto, si miras en los apartados Class Actions y Class Outlets, ver谩s que clicks y haceclick: est谩n disponibles.
- Haz Control-Click en File’s Owner en la ventana de MainMenu.nib (aquella a la que arrastramos nuestro NSObject tiempo ha) y arrastralo al objeto AppController. En el popup, selecciona la opci贸n delegate.
- Ahora ve a la interfaz que creaste en la parte I del tutorial. Haz Control-Click en el bot贸n y arr谩stralo a nuestro AppController. Selecciona haceclick: en el popup.
- Repite el paso 11 empezando a arrastrar en AppController y acabando en el campo de texto. Selecciona clicks en el popup.
- Ya hemos acabado! Los pasos 11 y 12 han enlazado los outlets y las acciones que creamos con c贸digo en XCode a la interfaz, a trav茅s de un controlador que une ambas partes: el objeto NSObject ligado a nuestro c贸digo a trav茅s de la clase.
Una vez hecho esto, pasemos a lo importante: el c贸digo.
Modificad vuestro archivo AppController.m para que quede as铆:
#import "AppController.h"@implementation AppController
- (void)awakeFromNib
{
[clicks setStringValue:@"0"];
}- (IBAction)haceclick:(id)sender
{
int numerodeclicks = [clicks intValue];
numerodeclicks++;
[clicks setStringValue:[NSString stringWithFormat:@"%d",numerodeclicks]];
}@end
Veamos que significa esta, aparentemente sin sentido, parrafada:
- #import AppController.h - “inserta” el contenido del archivo AppController.h.
- @implementation AppController - Inicia la implementaci贸n de la clase AppController. Se cierra con @end al final del archivo.
- - (void)awakeFromNib: - Esta acci贸n determina los pasos a ejecutar al inicializarse la aplicaci贸n. Estos pasos est谩n delimitados entre corchetes.
- [clicks setStringValue:@”0″]; - Esta linea llama al outlet clicks (nuestro campo de texto) a ejecutar su m茅todo setStringValue con el par谩metro @”0″. El m茅todo setStringValue establece un nuevo valor en el campo de texto.
- - (IBAction)haceclick:(id)sender - Delimita entre corchetes los pasos a ejecutar cuando un elemento de la interfaz llame a la acci贸n haceclick:
- int numerodeclicks = [clicks intValue]; - Crea la variable numerodeclicks de tipo entero (int) y establece que su valor sea igual al resultado de ejecutar el m茅todo intValue en el objeto clicks. El m茅todo intValue devuelve el valor de clicks como un entero.
- numerodeclicks++; - Aumenta el valor de numerodeclicks en 1.
- [clicks setStringValue:[NSString stringWithFormat:@”%d”,numerodeclicks]]; - Hace que el objeto clicks use el m茅todo setStringValue, estableciendo como valor de este m茅todo el resultado de ejecutar el m茅todo stringWithFormat correspondiente a la clase NSString con la propiedad @”%d”,numerodeclicks]]
Por 煤ltimo, seleccionad Build & Run. Esto compilar谩 vuestro codigo y lo ejecutar谩.
El lunes empezar茅 con un nuevo tutorial m谩s avanzado. Espero que hay谩is disfrutado tanto con el tutorial como yo haci茅ndolo.
Cualquier duda, en los comentarios.
Etiquetas: cocoa, Interface Builder, objective-c, programaci贸n, xcode


Para hacer un trackback a este artículo, usa
Para seguir los comentarios de este artículo por RSS, usa 

12 comentarios
Hola, enhorabuena por el blog!
Una cosa, estos pasos son para Leopard exclusivamente? o se pueden aplicar al Tiger?
Gracias, un saludo
@Artus: Los pasos son para Leopard, pero lo del c贸digo es para ambos sistemas operativos. Los pasos para Tiger los encontrar谩s en la parte II del tutorial, que se public贸 el mi茅rcoles.
estoy esperando al lunes.
un saludo
ufff, la verdad es que el “builder” me recuerda mucho al visual basic, en su momento fue una gran herramienta para desarrollar aplicaciones gr谩ficas de escritorio aunque al final parece que se ha impuesto el lenguaje de programaci贸n java. Conozco java y me parece un lenguaje bastante sencillo de aprender y bastante limpio a la hora de codificar. He le铆do el c贸digo que hab茅is publicado y la verdad es que est谩 llena de elementos que aparentemente no tienen sentido como [clicks setStringValue:@”0″]; esto en java quedar铆a como String clicks = “0″; Much铆simo mas simple de entender para cualquiera que haya programado alguna vez. La linea [clicks setStringValue:[NSString stringWithFormat:@鈥%d鈥,numerodeclicks]]; tampoco tiene desperdicio que traducido a java seria algo as铆 como clicks = stringWithFormat( formato, numeroClicks); mucho mas intuitivo y sencillo. Como conclusi贸n, me parece el que lenguaje utilizado para programar en mac cocoa u objective-c (el de este tutorial) es un poco enrevesado y complica la codificaci贸n , es poco intuitivo. No s茅, es mi opini贸n. Las cosas cuanto mas sencillas mejor, quiz谩s sea esa la raz贸n de que triunfe java a nivel mundial. Aun as铆 muchas gracias por el post, ;-))
…tengo un problema con lo de NIB Files, cuando le doy desplegar no me aparece el archivo MainMenu.nib, no se despliega nada, que debo de hacer?
@ups: Prueba a crear un nuevo proyecto y aseg煤rate de que eliges uno del tipo Cocoa Application. Si siguiera sin funcionar, crea un archivo con Interface Builder, ll谩male “MainMenu.nib” y 谩brelo desde tu proyecto de XCode. Si tienes mas dudas o no consiguieras hacerlo funcionar, puedes contactar conmigo en santiago@somosunared.com si lo prefieres :)
pues no funciono nada de eso, cuando genero el archivo en InterfaceBuilder, no se abre desde el Xcode, creo que el problema radica, en que descargue la version beta de Xcode 3.1, y aun que ya lo actualiza me sigue sin dejar hacerlo. :(
Estupendo lo del m茅todo awakeFromNib. No hab铆a visto en otros tutos algo tan b谩sico. Muchas gracias.
Tengo un peque帽o problemita, en el paso 12, no me aparece clicks en el popup. ya repeti el proyecto y nada, uso leopard. Muchas gracias por tu tiempo. Excelente tutorial!!!!
Mil Gracias
Mil gracias, estaba cometiendo un grave herror, no lo hacia en la direccion correcta por eso no me aparecia. Lo siento!!!!
Hola, gracias por esto, me parece muy interesante. Tengo 14 a帽os, quiero hacer de carrera ingeneria de teleco, y me gustaria ir aprendiendo a programar.
Una duda, 驴A que te refieres con la interfaz de los pasos 11 y 12? Es que no lo termino de entender y no se como se hace, 驴me lo podr铆as explicar con mas detalles, por favor?
Muchas gracias de antemano
@david: Has hecho la parte uno del tutorial? Es un tutorial en tres partes, y esta es la tercera… Bueno, pues tienes que hacer Control-Click en el bot贸n que creaste en la parte uno del tutorial y arrastrar al objeto AppController que has creado en los pasos anteriores… no tiene mas misterio…