2011-11-05 11 views
8

¿Alguien podría mostrarme cómo agregar un MKUserTrackingBarButtonItem a mi barra de herramientas en Interface Builder? Tengo un UIBarButtonItem en mi UIToolbar cuya clase he configurado en MKUserTrackingBarButtonItem, pero esta no parece la forma correcta de hacerlo.Cómo agregar MKUserTrackingBarButtonItem en Interface Builder

tengo la siguiente propiedad:

@property (nonatomic, strong) IBOutlet MKUserTrackingBarButtonItem *trackingButton; 

Y puedo agregar el botón de código utilizando:

trackingButton = [[MKUserTrackingBarButtonItem alloc] initWithMapView:mapView]; 
NSMutableArray *items = [[NSMutableArray alloc] initWithArray:toolbar.items]; 
[items insertObject:trackingButton atIndex:0]; 
[toolbar setItems:items]; 

Pero yo sólo me falta cómo hacerlo en IB.

Respuesta

8

Desafortunadamente esto no parece posible en IB debido al inicializador designado de MKUserTrackingBarButtonItem. Debe instanciarlo y agregarlo a la barra de herramientas mediante programación, tal como lo hace.

4

Usted puede añadir un UIBarButtonItem, y luego convertirlo en un MKUserTrackingBarButtonItem en el campo de la clase en la barra lateral inspector de identidad/IB, y añadir el botón como un IBOutlet y después de que aparezca usted tiene que establecer la propiedad mapView mediante programación . Con veloz esto se puede hacer muy bien en didSet:

@IBOutlet weak var trackingButton: MKUserTrackingBarButtonItem! { 
    didSet { 
    trackingButton.mapView = self.mapView; 
    } 
} 

o puede hacer subclase y hacer un mapViewIBOutlet para que pueda conectarse en IB:

class UserTrackingBarButtonItem : MKUserTrackingBarButtonItem { 
    @IBOutlet override var mapView : MKMapView? { 
    get { 
     return super.mapView; 
    } 
    set { 
     super.mapView = newValue; 
    } 
    } 
} 
Cuestiones relacionadas