UIBarButtonItem没有显示在UIToolbar上Swift

问题描述:

我有一个导航控制器的工具栏enabled.I有一个视图控制器MKMapView嵌入在导航控制器。当我在模拟器中运行它时,工具栏显示出来。但是,当我尝试从代码添加UIBarButtonItem时,UIBarButtonItem不显示在工具栏上。要添加按钮,我在我的viewDidAppear方法中有以下代码:UIBarButtonItem没有显示在UIToolbar上Swift

var trackingButton:MKUserTrackingBarButtonItem = MKUserTrackingBarButtonItem(mapView: self.theMapView) 
    self.navigationController?.toolbarItems?.append(trackingButton) 
    //self.toolbarItems?.append(trackingButton) also doesn't work 

任何有关错误的想法?

这是预期的功能。根据文档:

自定义工具栏与导航控制器相关联。 (只读)

此属性包含对由导航控制器管理的内置工具栏的引用。对于想要从工具栏呈现操作表的客户端,仅提供对此工具栏的访问 。您 不应该直接修改UIToolbar对象。通过与此导航控制器关联的自定义视图控制器 完成此工具栏内容的管理。对于导航堆栈中的每个视图控制器 ,可以使用UIViewController的setToolbarItems:animated:方法分配一组自定义的工具栏项目集 。

该工具栏的可见性由toolbarHidden 属性控制。该工具栏还服从当前可见视图控制器的hidesBottomBarWhenPushed属性 ,并根据需要自动隐藏并自动显示 。

换句话说,你不能做navigationController.toolbar.setItems。您必须使用navigationControllers方法(即):navigationController.setToolbarItems