我的應用程序是基於選項卡的。在一個選項卡上是一個地圖(我正在使用Mapbox)。當我點擊此選項卡時,它會在navigationcontroller頂部欄的右上角放置一個trackingbarbutton項目。點擊後,此按鈕與mapView交互顯示用戶的位置。我遇到的問題是,當我轉到另一個選項卡(除地圖之外)時,我需要從右上角刪除跟蹤欄按鈕,因爲它不適用於任何其他選項卡。重新顯示依賴mapbox mapView的rightBarButtonItem?
這裏的MapView和跟蹤欄按鈕如何初始化
- (void)viewDidLoad
{
[super viewDidLoad];
RMMBTilesSource *offlineSource = [[RMMBTilesSource alloc] initWithTileSetResource:@"example-map" ofType:@"mbtiles"];
RMMapView *mapView = [[RMMapView alloc] initWithFrame:self.view.bounds andTilesource:offlineSource];
//Initalize button in top-right
self.tabBarController.navigationItem.rightBarButtonItem = [[RMUserTrackingBarButtonItem alloc] initWithMapView:mapView];
}
這裏是我隱藏按鈕現在
- (void)viewWillDisappear:(BOOL)animated
self.tabBarController.navigationItem.rightBarButtonItem = nil;
}
通常情況下,我只想在viewWillAppear中重新初始化按鈕(),但問題是我需要使用在viewDidLoad()中初始化的mapView對象。有沒有人有任何想法,我可以重新使用該對象或簡單地隱藏rightBarButtonItem而不是完全刪除它?我寧願不要每次都重新初始化mapView。
謝謝!
只是一個評論,但這也會在MapKit中以相同的方式操作,因爲那裏的欄按鈕項目的作用是相同的。 – incanus 2014-10-30 17:21:06