Swift iOS -NavigationBar和RightBarButtonItem未显示

时间:2017-06-15 06:30:34

标签: ios uinavigationcontroller uinavigationbar programmatically-created rightbarbuttonitem

我在SO上寻找答案并找不到它。程序化确实不是我的事,但我打算在7月初学习它。

我正在使用故事板。我有一个NavVC,它有一个RedVC作为root,RedVC推动BlueVC。它们都是由segues连接起来的。我有一个在故事板中的PurpleVC,但它没有连接任何东西

NavVC->RedVC->BlueVC //segues

              PurpleVC //no segue

在我的BlueVC中,我有一个collectionView和I当我按下一个单元格时,我想要模拟地呈现我正在成功使用的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)
   }
}

问题是,当purpleVC为navigationBar时,我没有获得rightBarButtonItempresented modally。我尝试将它添加到collectionView的navigationItem中的PurpleVC didSelectItemAt但没有出现,所以我尝试将它添加到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)
   }
}

当PurpleVC以模态呈现时,我的navigationBarrightBarButtonItem怎么没有显示?

1 个答案:

答案 0 :(得分:0)

当你展示一个控制器时,它不会带有导航栏&项目。 转到您的purpleVC故事板文件并手动添加导航栏和项目。 希望它会有所帮助!