2014-10-18 62 views
1

我有一個導航控制器的工具欄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 

任何有關錯誤的想法?

回答

2

這是預期的功能。根據文檔:

自定義工具欄與導航控制器相關聯。 (只讀)

此屬性包含對由導航控制器管理的內置工具欄的引用。對於想要從工具欄呈現操作表的客戶端,僅提供對此工具欄的訪問 。您 不應該直接修改UIToolbar對象。通過與此導航控制器關聯的自定義視圖控制器 完成此工具欄內容的管理。對於導航堆棧中的每個視圖控制器 ,可以使用UIViewController的setToolbarItems:animated:方法分配一組自定義的工具欄項目集 。

該工具欄的可見性由toolbarHidden 屬性控制。該工具欄還服從當前可見視圖控制器的hidesBottomBarWhenPushed屬性 ,並根據需要自動隱藏並自動顯示 。

換句話說,你不能做navigationController.toolbar.setItems。您必須使用navigationControllers方法(即):navigationController.setToolbarItems