01/01 - hello nscoder - introducción

42
Saturday, June 25, 2011

Upload: nscoderbcn

Post on 15-May-2015

848 views

Category:

Technology


10 download

DESCRIPTION

Introducción al desarrollo iOS

TRANSCRIPT

Page 1: 01/01 - Hello NSCoder - Introducción

Saturday, June 25, 2011

Page 2: 01/01 - Hello NSCoder - Introducción

Hello NSCoder IIntroducción al desarrollo para iOS

@nscoder_bcn

Saturday, June 25, 2011

Page 3: 01/01 - Hello NSCoder - Introducción

[NSCoderBCN event:@”Hello NSCoder” date:28/05/11]

NSCoder

• Profesionales y entusiatas del mundo de la manzana

• NSCoder Night

• Cada jueves 19:00 - Frankfurt de Pelayo

• Twitter: @nscoder_bcn

• http://groups.google.com/group/nscoder_bcn

• http://nscoder-bcn.tumblr.com/Saturday, June 25, 2011

Page 4: 01/01 - Hello NSCoder - Introducción

[NSCoderBCN event:@”Hello NSCoder” date:28/05/11]

Programa (Mañana)

• Introducción Objective C / iOS

• Gestión de Memoria

• Debugging and Memory Leaks

• “Hello NSCoder” App

• Web Service “What’s up, NSCoder”

• Testing

Saturday, June 25, 2011

Page 5: 01/01 - Hello NSCoder - Introducción

[NSCoderBCN event:@”Hello NSCoder” date:28/05/11]

Programa (Tarde)

• Presentación de Omnis Studio

• Introducción a la programación con Omnis Studio

• Programación de una aplicación cliente Omnis con XCode para iPhone/iPad

Saturday, June 25, 2011

Page 6: 01/01 - Hello NSCoder - Introducción

[NSCoderBCN event:@”Hello NSCoder” date:28/05/11]

Referencias

• Material (github)

• https://github.com/NSCoderNightBCN/Hello-NSCoder

• Apple Developer

• http://developer.apple.com/

• NSCodeCenter

• http://www.nscodecenter.com/

• 85% Cocoa

• http://ochentaycincoporcientococoa.tumblr.com/

Saturday, June 25, 2011

Page 7: 01/01 - Hello NSCoder - Introducción

[NSCoderBCN event:@”Hello NSCoder” date:28/05/11]

Resultado

• App que nos localiza

• Conecta a un Web Service

• Devuelva eventos a nuestros alrededores

• Table View

• Detail View

Saturday, June 25, 2011

Page 8: 01/01 - Hello NSCoder - Introducción

Introduccion iOSAndreas @aquarioverde

Saturday, June 25, 2011

Page 9: 01/01 - Hello NSCoder - Introducción

[NSCoderBCN event:@”Hello NSCoder” date:28/05/11]

Requirimientos

• Conocimientos Objective C / iOS

• MacOS X

• iOS SDK

• XCode / Interface Builder

Saturday, June 25, 2011

Page 10: 01/01 - Hello NSCoder - Introducción

[NSCoderBCN event:@”Hello NSCoder” date:28/05/11]

Objective C

• Class / Instance

• Variable

• Properties

• Method

Saturday, June 25, 2011

Page 11: 01/01 - Hello NSCoder - Introducción

[NSCoderBCN event:@”Hello NSCoder” date:28/05/11]

Objective C

• Method

NCEvent *event = [eventLoader loadNearbyEvents:location ofType:type];

- (id)loadNearbyEvents:(CLLocation *)location ofType:(NString *)type;

+ (id)eventFromPList:(NSString *)listPath;

• Message

• receiver / selector / arguments

Saturday, June 25, 2011

Page 12: 01/01 - Hello NSCoder - Introducción

[NSCoderBCN event:@”Hello NSCoder” date:28/05/11]

Objective C#import <UIKit/UIKit.h>

@interface NCEvent : NSObject { NSString *name;}

- (id)initWithName:(NSString *)name;

@end

#import “NCEvent.h”

@implementation NCEvent

- (id)initWithName:(NSString *)name {...}

@end

.h

.m

Inheritance

Saturday, June 25, 2011

Page 13: 01/01 - Hello NSCoder - Introducción

[NSCoderBCN event:@”Hello NSCoder” date:28/05/11]

Objective C

• Protocol

@interface NCController : NSObject <NCEventDelegate> {}

@end

@protocol NCEventDelegate <NSObject>

@required- (void)didFinishUpdatingData;

@end

.h

.h

Saturday, June 25, 2011

Page 14: 01/01 - Hello NSCoder - Introducción

[NSCoderBCN event:@”Hello NSCoder” date:28/05/11]

iOS

• Frameworks

• Foundation

• UIKit

• UIView / UITableView

• UINavigationBar

• root / push / pop

Saturday, June 25, 2011

Page 15: 01/01 - Hello NSCoder - Introducción

[NSCoderBCN event:@”Hello NSCoder” date:28/05/11]

iOS - MVC

ControllerSaturday, June 25, 2011

Page 16: 01/01 - Hello NSCoder - Introducción

[NSCoderBCN event:@”Hello NSCoder” date:28/05/11]

iOS - MVC

Model

Controller

Data

Saturday, June 25, 2011

Page 17: 01/01 - Hello NSCoder - Introducción

[NSCoderBCN event:@”Hello NSCoder” date:28/05/11]

iOS - MVC

Model

Controller

View

Data UI

Saturday, June 25, 2011

Page 18: 01/01 - Hello NSCoder - Introducción

[NSCoderBCN event:@”Hello NSCoder” date:28/05/11]

iOS - MVC

Controller

Model

Controller

View

Data UI

Logica

Saturday, June 25, 2011

Page 19: 01/01 - Hello NSCoder - Introducción

[NSCoderBCN event:@”Hello NSCoder” date:28/05/11]

iOS - MVC

Controller

Model

Controller

View

Data UI

Logica

Saturday, June 25, 2011

Page 20: 01/01 - Hello NSCoder - Introducción

[NSCoderBCN event:@”Hello NSCoder” date:28/05/11]

iOS - MVC

Controller

Model

Controller

View

Data UI

Logica

Saturday, June 25, 2011

Page 21: 01/01 - Hello NSCoder - Introducción

[NSCoderBCN event:@”Hello NSCoder” date:28/05/11]

iOS - MVC

Controller

Model

Controller

View

Data UI

Logica

Saturday, June 25, 2011

Page 22: 01/01 - Hello NSCoder - Introducción

[NSCoderBCN event:@”Hello NSCoder” date:28/05/11]

iOS - MVC

Controller

Model

Controller

View

<delegate>

Data UI

Logica

Saturday, June 25, 2011

Page 23: 01/01 - Hello NSCoder - Introducción

[NSCoderBCN event:@”Hello NSCoder” date:28/05/11]

iOS - MVC

Controller

Model

Controller

View

<datasource>

<delegate>

Data UI

Logica

Saturday, June 25, 2011

Page 24: 01/01 - Hello NSCoder - Introducción

[NSCoderBCN event:@”Hello NSCoder” date:28/05/11]

iOS - MVC

Controller

Model

Controller

View

<datasource>

<delegate>

outlet

Data UI

Logica

Saturday, June 25, 2011

Page 25: 01/01 - Hello NSCoder - Introducción

[NSCoderBCN event:@”Hello NSCoder” date:28/05/11]

iOS - MVC

Controller

Model

Controller

View

<datasource>

<delegate>

outlet action

Data UI

Logica

Saturday, June 25, 2011

Page 26: 01/01 - Hello NSCoder - Introducción

[NSCoderBCN event:@”Hello NSCoder” date:28/05/11]

iOS - MVC

Controller

Model

Controller

View

<datasource>

<delegate>

KVO

outlet action

Data UI

Logica

Saturday, June 25, 2011

Page 27: 01/01 - Hello NSCoder - Introducción

“Hello NSCoder” AppAlfonso @setfilesl

Andreas @aquarioverde

Saturday, June 25, 2011

Page 28: 01/01 - Hello NSCoder - Introducción

[NSCoderBCN event:@”Hello NSCoder” date:28/05/11]

Pasos

• Crear Proyecto

• Crear DetailView & Controller

• Crear NCEvent objeto

• Add NavigationController

• Crear TableView

• Push/Pop DetailView

Saturday, June 25, 2011

Page 29: 01/01 - Hello NSCoder - Introducción

[NSCoderBCN event:@”Hello NSCoder” date:28/05/11]

XCode: Crear Proyecto

• IDE for Objective C

• Templates

• Window-based Application

• com.nscoderbcn.HelloNSCoder

• Include Unit Tests

Saturday, June 25, 2011

Page 30: 01/01 - Hello NSCoder - Introducción

[NSCoderBCN event:@”Hello NSCoder” date:28/05/11]

DetailsViewController

• Creación de la View de detalles(XIB) y su Controller

• File -> New -> New File

• UIViewController subclass

• With XIB

• Save As: NCDetailsViewController

Saturday, June 25, 2011

Page 31: 01/01 - Hello NSCoder - Introducción

[NSCoderBCN event:@”Hello NSCoder” date:28/05/11]

XCode Groups

• Creación de grupos para organizar el proyecto

• File -> New -> New Group

• UI

• XIB

• Model

Saturday, June 25, 2011

Page 32: 01/01 - Hello NSCoder - Introducción

[NSCoderBCN event:@”Hello NSCoder” date:28/05/11]

IB: DetailView

• Herramienta para crear GUI

• XIB: XML file que define nuestra view

• NIB: compilado del XIB

• IBOutlet / IBAction

• conectar el Controller con los elementos de la View

Saturday, June 25, 2011

Page 33: 01/01 - Hello NSCoder - Introducción

[NSCoderBCN event:@”Hello NSCoder” date:28/05/11]

Details View

• NCEventDetailViewController.xib

• añadir y posicionar en UIView

• UIImageView

• Image: NSCoder_Icon.png

• 3 UILabel

• UITextView

Saturday, June 25, 2011

Page 34: 01/01 - Hello NSCoder - Introducción

[NSCoderBCN event:@”Hello NSCoder” date:28/05/11]

Root View Controller

• HelloNSCoderAppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{ NCEventDetailViewController *detailViewController = [[NCEventDetailViewController alloc] init]; self.window.rootViewController = detailViewController; [detailViewController release]; [self.window makeKeyAndVisible]; return YES;}

.m

Saturday, June 25, 2011

Page 35: 01/01 - Hello NSCoder - Introducción

[NSCoderBCN event:@”Hello NSCoder” date:28/05/11]

NCEvent

• Creación de la clase con los detalles del evento = Model

• File -> New -> New File

• Objective C class

• Subclass of NSObject

• Save As: NCEvent

Saturday, June 25, 2011

Page 36: 01/01 - Hello NSCoder - Introducción

[NSCoderBCN event:@”Hello NSCoder” date:28/05/11]

NCEvent• header

• properties & init

• implemenation

• synthesize, init, dealloc

@interface NCEvent : NSObject {

}

@property (nonatomic, copy) NSString *name;@property (nonatomic, copy) NSString *shortDescription;@property (nonatomic, retain) NSDate *startDate;@property (nonatomic, copy) NSString *location;@property (nonatomic, copy) NSString *fullDescription;

- (id)initWithName:(NSString *)eName startDate:(NSDate *)eStartDate location:(NSString *)eLocation;

@end

.h

Saturday, June 25, 2011

Page 37: 01/01 - Hello NSCoder - Introducción

[NSCoderBCN event:@”Hello NSCoder” date:28/05/11]

Detail View-Controller

• Conectar NCEventDetailViewController a XIB

• property event

• property outlets para los elementos del XIB

• synthesize & dealloc!!!

• Conectar a elementos en XIB

@property (nonatomic, retain) NCEvent *event;

@property (nonatomic, retain) IBOutlet UILabel *shortDescriptionLabel;@property (nonatomic, retain) IBOutlet UILabel *startDateLabel;@property (nonatomic, retain) IBOutlet UILabel *locationLabel;@property (nonatomic, retain) IBOutlet UITextView *descriptionView;

.h

Saturday, June 25, 2011

Page 38: 01/01 - Hello NSCoder - Introducción

[NSCoderBCN event:@”Hello NSCoder” date:28/05/11]

Load View Data

• NCEventDetailViewController

• cargar datos el evento al aparecer

- (void)viewWillAppear:(BOOL)animated{ [self.navigationItem setTitle:event.name]; self.shortDescriptionLabel.text = event.shortDescription; NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; [formatter setDateFormat:@"yyyy-mm-dd"]; self.startDateLabel.text = [formatter stringFromDate:event.startDate]; self.locationLabel.text = event.location; self.fullDescriptionTextView.text = event.fullDescription;}

Saturday, June 25, 2011

Page 39: 01/01 - Hello NSCoder - Introducción

[NSCoderBCN event:@”Hello NSCoder” date:28/05/11]

Crear Evento

• HelloNSCoderAppDelegate

• crear un evento y asignalo al Controller

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{ NCEvent *event = [[NCEvent alloc] initWithName:@"Hello NSCoder" startDate:[NSDate date] location:@"CINC Barcelona"]; event.shortDescription = ...

NCEventDetailViewController *detailViewController = [[NCEventDetailViewController alloc] init]; detailViewController.event = event; [event release];

... }

.m

Saturday, June 25, 2011

Page 40: 01/01 - Hello NSCoder - Introducción

[NSCoderBCN event:@”Hello NSCoder” date:28/05/11]

Navigation Controller

• HelloNSCoderAppDelegate

• crear Navigation Controller

• set Detail Controller como root

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{ ...

NCEventDetailViewController *detailViewController = [[NCEventDetailViewController alloc] init]; detailViewController.event = event; [event release];

UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController: detailViewController];

... }

.m

Saturday, June 25, 2011

Page 41: 01/01 - Hello NSCoder - Introducción

[NSCoderBCN event:@”Hello NSCoder” date:28/05/11]

Navigation Title

• NCEventDetailsViewController

• asignar un titulo a la Navigation Bar

- (void)viewWillAppear:(BOOL)animated{ self.navigationItem.title = event.name; ...

.m

Saturday, June 25, 2011

Page 42: 01/01 - Hello NSCoder - Introducción

[NSCoderBCN event:@”Hello NSCoder” date:28/05/11]

Gracias!

• @nscoder_bcn

• Alfonso: @setfilesl

• Andreas: @aquarioverde

Saturday, June 25, 2011