如何在Interface Builder中添加MKUserTrackingBarButtonItem

时间:2011-11-05 22:11:49

标签: ios cocoa-touch interface-builder uibarbuttonitem

有人能告诉我如何在Interface Builder中的工具栏中添加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 个答案:

答案 0 :(得分:9)

不幸的是,由于MKUserTrackingBarButtonItem的指定初始化程序,在IB中似乎不可能。您必须实例化它并以编程方式将其添加到工具栏中。正如您所做的那样。

答案 1 :(得分:4)

您只需添加UIBarButtonItem,然后在身份检查器/ IB侧栏中的类字段中将其设为MKUserTrackingBarButtonItem,然后将该按钮添加为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;
    }
  }
}