iOS: Frameworks and Delegation

21
iOS: Frameworks, Delega3on and MapKit Jussi Pohjolainen Tampere University of Applied Sciences

Transcript of iOS: Frameworks and Delegation

Page 1: iOS: Frameworks and Delegation

iOS:  Frameworks,  Delega3on  and  MapKit  

Jussi  Pohjolainen  Tampere  University  of  Applied  Sciences  

Page 2: iOS: Frameworks and Delegation

About  Frameworks  

•  Framework  is  a  collec3on  of  classes  that  are  added  to  target  

•  Target  =  the  compiled  iOS  app  

•  Cocoa  Touch  has  several  frameworks  

•  You  can  add  and  remove  frameworks  in  your  project  

Page 3: iOS: Frameworks and Delegation

NSString  

NSString  needs  the  Founda3on  framework!  

Page 4: iOS: Frameworks and Delegation

Add  a  Framework  

Choose  Target  Select  Build  Phases  Click  +  (Link  Binary  with  Libraries)  

Page 5: iOS: Frameworks and Delegation

About  Delegate  

// Create location manager LocationManager* lc = [[LocationManager alloc] init]; // Who is receiving location updates? It’s // someObject. What is someObject? It’s // whatever object that implements a // certain protocol! [lc setDelegate: someObject];

Page 6: iOS: Frameworks and Delegation

Documenta3on  

Whatever  object,  but  is  has  to  implement  

CLoca3oinManagerDelegate  Protocol!  

Page 7: iOS: Frameworks and Delegation

About  Delegate  

// Create location manager

lc = [[LocationManager alloc] init];

// Set delegate this “this”-object

[lc setDelegate: self];

Page 8: iOS: Frameworks and Delegation

Implemen3ng  a  Delegate  #import <UIKit/UIKit.h>

#import <CoreLocation/CoreLocation.h>

@interface MyLocationViewController : UIViewController<CLLocationManagerDelegate>

{

CLLocationManager *locationManager;

}

Page 9: iOS: Frameworks and Delegation

Delegate  Methods  

Page 10: iOS: Frameworks and Delegation

Implementa3on  - (void)locationManager:(CLLocationManager *)manager

didUpdateLocations:(NSArray *)locations

{

// Implementation here

}

Page 11: iOS: Frameworks and Delegation

Delega3on  

•  Delega3on:  OO  way  of  making  callback  •  Send  messages  to  some  object.  Some  object  must  have  methods  that  are  defined  in  the  protocol  

•  The  same  than  in  Java  –  buUon.addAc3onlistener(Ac3onListener  x)  – Where  x  is  an  interface  

•  By  default,  protocol  methods  are  mandatory.  But  protocol  may  hold  op-onal  methods!  

•  Typically  in  delegate  protocols,  the  methods  are  op-onal  

Page 12: iOS: Frameworks and Delegation

Delega3on  

•  If  delega3on  protocol  method  is  mandatory,  it’s  called  without  checking  

•  If  delega3on  protocol  method  is  op3onal,  then  checking  is  done:  if  target  object  contains  this  method,  call  it.  – This  happens  in  run3me,  you  don’t  have  to  worry  about  this.  

Page 13: iOS: Frameworks and Delegation

CLLoca3onManagerDelegate.h  

All  methods  are  op3onal!  

Page 14: iOS: Frameworks and Delegation

Demo:  Using  Debugger  

Page 15: iOS: Frameworks and Delegation

MAPKIT  

Page 16: iOS: Frameworks and Delegation

MapKit  Framework  •  Interface  for  embedding  maps  into  view  •  Supports  also  – Annota3ng  map  – Adding  overlay  –  Reverse  geocoding  

•  As  of  iOS  6  Apple  uses  it’s  own  maps  instead  of  Google  maps  

•  Reference  –  hUp://developer.apple.com/library/ios/#documenta3on/MapKit/Reference/MapKit_Framework_Reference/_index.html  

Page 17: iOS: Frameworks and Delegation

How?  

•  Add  MapKit  framework  to  your  project  •  Import  MapKit  –  class  –  #import <MapKit/MapKit.h>

•  Use  MKMapView  object  – IBOutlet MKMapView *worldView;

•  Show  user  loca3on?  – Set  showsUserLocation  property  to  YES

•  Use  MKMapViewDelegate  protocol

Page 18: iOS: Frameworks and Delegation

MKMapViewDelegate  

This  is  called  when  user  loca3on  changes.  In  here  you  can  get  the  coordinates  and  zoom  in  

MapView  

Page 19: iOS: Frameworks and Delegation

Annota3ons  

•  Display  something  on  a  map:  annota3on  •  Annota3on  is  any  object  that  conforms  to  MKAnnotation  protocol  – These  objects  can  be  added  to  MKMapView  

•  MKAnnota3on  Reference  – An  object  that  adopts  this  protocol  must  implement  the  coordinate  property.  The  other  methods  of  this  protocol  are  op3onal.  

Page 20: iOS: Frameworks and Delegation

MapPoint  

Page 21: iOS: Frameworks and Delegation

Add  MapPoint  to  Map