0

我看了SO的答案,並找不到它。程序設計真的不是我的事情,但我打算在7月初左右學習它。Swift iOS - 導航欄和RightBarButtonItem不顯示

我正在使用故事板。我有一個以root用戶身份擁有RedVC的NavVC,而RedVC則推送BlueVC。他們都通過segues連接。我有一個PurpleVC是在故事板,但它沒有連接到任何東西

NavVC->RedVC->BlueVC //segues 

       PurpleVC //no segue 

在我BlueVC我有一個的CollectionView和我當我按下一個細胞我想模態地呈現它,我成功地做PurpleVC使用:

BlueVC:ViewController, CollectionViewControllerDele..., CollectionViewControllerData...{ 

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { 

     let purpleVC = storyboard?.instantiateViewController(withIdentifier: "PurpleVC") as! PurpleVC 
     purpleVC.data = data[indexPath.row] 

     purpleVC.navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(dismissVC)) 

     navigationController?.present(purpleVC, animated: true, completion: nil) 
    } 

@objc fileprivate func dismissVC(){ 
    dismiss(animated: true, completion: nil) 
    } 
} 

的問題是我沒有得到一個navigationBar也不rightBarButtonItem當purpleVC是presented modally。我嘗試將它添加到CollectionView的didSelectItemAt中的PurpleVC的navigationItem中,但沒有顯示出來,因此我嘗試將它添加到PurpleVC的viewDidLoad中,但是沒有任何內容顯示在那裏。

PurpleVC:

PurpleVC:UIViewController{ 

var data:SomeClass? 

override func viewDidLoad() { 
     super.viewDidLoad() 

     navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(dismissVC)) 
    } 

@objc fileprivate func dismissVC(){ 
    dismiss(animated: true, completion: nil) 
    } 
} 

爲什麼我navigationBarrightBarButtonItem當PurpleVC有模式呈現不顯示?

回答

0

當你展示一個控制器時,它不會附帶導航欄&項目。 轉到您的purpleVC故事板文件並手動添加導航欄和項目。 希望它會有所幫助!

+0

感謝您的幫助!我用nav = UINavigationController(rootViewController:purpleVC)。這很容易 –