Как добавить MKUserTrackingBarButtonItem в Интерфейсном Разработчике - PullRequest
8 голосов
/ 06 ноября 2011

Может ли кто-нибудь показать мне, как добавить MKUserTrackingBarButtonItem на мою панель инструментов в Интерфейсном Разработчике?У меня есть UIBarButtonItem на моем UIToolbar, класс которого я установил в MKUserTrackingBarButtonItem, но это не совсем правильный способ сделать это.

У меня есть следующее свойство:

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

И я могу добавить кнопку в коде, используя:

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

Но мне просто не хватает, как это сделать в IB.

Ответы [ 2 ]

9 голосов
/ 12 февраля 2012

К сожалению, это не представляется возможным в IB из-за назначенного инициализатора MKUserTrackingBarButtonItem.Вы должны создать его экземпляр и программно добавить его на панель инструментов, как и вы.

4 голосов
/ 20 апреля 2016

Вы можете просто добавить UIBarButtonItem, а затем сделать его MKUserTrackingBarButtonItem в поле класса на боковой панели инспектора идентификации / IB, добавить кнопку в качестве IBOutlet, а затем, чтобы она появилась, необходимо установитьmapView свойство программно.С помощью swift это можно сделать красиво в didSet:

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

Или вы можете создать подкласс и сделать mapView IBOutlet, чтобы вы могли подключить его в IB:

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