我有一个启用了工具栏的导航控制器。我有一个带有MKMapView的视图控制器,它嵌入在导航控制器中。当我在模拟器中运行它时,工具栏显示出来。但是,当我尝试从代码中添加UIBarButtonItem时,UIBarButtonItem不会显示在工具栏上。要添加按钮,我在viewDidAppear方法中有以下代码:
var trackingButton:MKUserTrackingBarButtonItem = MKUserTrackingBarButtonItem(mapView: self.theMapView)
self.navigationController?.toolbarItems?.append(trackingButton)
//self.toolbarItems?.append(trackingButton) also doesn't work
关于出了什么问题的任何想法?
答案 0 :(得分:2)
这是预期的功能。根据文件:
与导航控制器关联的自定义工具栏。 (只读)
此属性包含对由其管理的内置工具栏的引用 导航控制器。仅提供对此工具栏的访问权限 对于想要从工具栏显示操作表的客户。您 不应该直接修改UIToolbar对象。管理这个 工具栏的内容通过自定义视图控制器完成 与此导航控制器相关联。对于每个视图控制器 在导航堆栈上,您可以分配一组自定义工具栏项 使用setToolbarItems:animated:UIViewController的方法。
此工具栏的可见性由toolbarHidden控制 属性。工具栏还遵循hidesBottomBarWhenPushed属性 当前可见的视图控制器和隐藏并显示自身 根据需要自动生成。
换句话说,你不能navigationController.toolbar.setItems
。您必须使用navigationControllers方法(即):navigationController.setToolbarItems