【问题标题】:How to add MKUserTrackingBarButtonItem in Interface Builder如何在 Interface Builder 中添加 MKUserTrackingBarButtonItem
【发布时间】:2011-11-05 22:11:48
【问题描述】:

谁能告诉我如何在 Interface Builder 的工具栏中添加MKUserTrackingBarButtonItem?我的UIToolbar 上有一个UIBarButtonItem,我已将其类设置为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 中做到这一点。

【问题讨论】:

    标签: ios cocoa-touch interface-builder uibarbuttonitem


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      您可以只添加一个UIBarButtonItem,然后在身份检查器/IB 侧边栏的类字段中将其设置为MKUserTrackingBarButtonItem,并将按钮添加为 IBOutlet,然后您必须设置mapView 以编程方式属性。使用 swift 这可以在didSet 中很好地完成:

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

      或者你可以继承 mapViewIBOutlet,这样你就可以在 IB 中连接它:

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

      【讨论】:

        猜你喜欢
        • 2021-12-18
        • 1970-01-01
        • 1970-01-01
        • 2015-12-17
        • 1970-01-01
        • 2013-01-23
        • 2014-03-31
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多