重新显示依赖mapbox mapView的rightBarButtonItem?

时间:2014-10-29 21:14:25

标签: ios objective-c mapbox

我的应用程序是基于标签的。在一个选项卡上是一个地图(我正在使用Mapbox。)当我单击此选项卡时,它会在navigationcontroller顶部栏的右上角放置一个跟踪栏按钮项。单击时,此按钮与mapView交互以显示用户的位置。我遇到的问题是,当我转到另一个标签(地图除外)时,我需要从右上方删除跟踪栏按钮,因为它不适用于任何其他标签。

以下是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。

谢谢!

1 个答案:

答案 0 :(得分:0)

您是否尝试修改navigationItem的{​​{1}}而不是UIViewController。这样,UITabBarController应仅在显示该视图控制器时显示,并在新rightBarButtonItem显示其自己的UIViewController时自动隐藏。虽然我对此并不是100%肯定。

navigationItem