2011-11-05 14 views
8

Interface BuilderのツールバーにMKUserTrackingBarButtonItemを追加する方法を誰にでも教えてもらえますか?私はUIToolbarUIBarButtonItemを持っていますが、そのクラスはMKUserTrackingBarButtonItemに設定されていますが、これは正しい方法ではありません。Interface Builderで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を作り、そしてあなたがプログラムでmapViewプロパティを設定する必要が表示されるのをIBOutletとしてボタンを追加することができ。

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

それともmapViewIBOutletはそうあなたがIBで接続することができサブクラス化することができます:迅速で、これはdidSetでうまく行うことができます

class UserTrackingBarButtonItem : MKUserTrackingBarButtonItem { 
    @IBOutlet override var mapView : MKMapView? { 
    get { 
     return super.mapView; 
    } 
    set { 
     super.mapView = newValue; 
    } 
    } 
} 
関連する問題