2011-11-05 45 views
8

任何人都可以告诉我如何在界面生成器中将MKUserTrackingBarButtonItem添加到我的工具栏中?我的UIToolbar上有一个UIBarButtonItem,我的类已设置为MKUserTrackingBarButtonItem,但这似乎不是正确的方法。如何在界面生成器中添加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。

回答

8

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

4

你可以只添加一个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; 
    } 
    } 
}