2011-11-05 17 views
8

Có ai có thể chỉ cho tôi cách thêm MKUserTrackingBarButtonItem vào thanh công cụ của tôi trong Trình tạo giao diện không? Tôi có một số UIBarButtonItem trên UIToolbar có lớp tôi đã đặt thành MKUserTrackingBarButtonItem, nhưng điều này dường như không đúng cách để làm điều đó.Cách thêm MKUserTrackingBarButtonItem trong Bộ dựng giao diện

Tôi có tài sản sau đây:

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

Và tôi có thể thêm các nút trong mã bằng cách sử dụng:

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

Nhưng tôi chỉ mất tích làm thế nào để làm điều đó trong IB.

Trả lời

8

Rất tiếc, điều này dường như không thể xảy ra trong IB do trình khởi tạo được chỉ định là MKUserTrackingBarButtonItem. Bạn phải khởi tạo nó và thêm nó vào thanh công cụ lập trình, như bạn đang làm.

4

Bạn chỉ có thể thêm một UIBarButtonItem, và sau đó làm cho nó một MKUserTrackingBarButtonItem trong lĩnh vực lớp trong thanh bên sắc thanh tra/IB, và thêm các nút như một IBOutlet và sau đó cho nó xuất hiện bạn phải thiết lập các mapView tài sản theo chương trình . Với nhanh chóng này có thể được thực hiện độc đáo trong didSet:

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

Hoặc bạn có thể phân lớp và làm mapView một IBOutlet vì vậy bạn có thể kết nối nó vào IB:

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