我的应用程序是基于标签的。在一个选项卡上是一个地图(我正在使用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。
谢谢!
答案 0 :(得分:0)
您是否尝试修改navigationItem
的{{1}}而不是UIViewController
。这样,UITabBarController
应仅在显示该视图控制器时显示,并在新rightBarButtonItem
显示其自己的UIViewController
时自动隐藏。虽然我对此并不是100%肯定。
navigationItem