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)。这很容易 –