Cómo agregar MKUserTrackingBarButtonItem en Interface Builder

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

Tengo la siguiente propiedad:

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

Y puedo agregar el button en el código usando:

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

Pero me estoy perdiendo cómo hacerlo en IB.

Lamentablemente, esto no parece posible en IB debido al inicializador designado de MKUserTrackingBarButtonItem . Tienes que instanciarlo y agregarlo a la barra de herramientas mediante progtwigción, como lo estás haciendo.

Puede agregar un UIBarButtonItem y, a continuación, convertirlo en un MKUserTrackingBarButtonItem en el campo de class en el inspector de identidad / barra lateral de IB y agregar el button como un IBOutlet y, a continuación, para que aparezca, debe establecer la propiedad mapView progtwigción. Con rapidez, esto se puede hacer muy bien en didSet :

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

O puede subclass y hacer mapView un IBOutlet para que pueda conectarlo en IB:

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