Swift iOS -NavigationBar 和 RightBarButtonItem 未显示

Swift iOS -NavigationBar and RightBarButtonItem not Showing

我在 SO 上寻找这个问题的答案,但找不到。程序化真的不是我的事,但我打算在 7 月初左右学习它。

我正在使用故事板。我有一个以 RedVC 为根的 NavVC,RedVC 推送一个 BlueVC。它们都是由 segues 连接的。我在 Storyboard 中有一个 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)
   }
}

问题是当 purpleVC 为 presented modally 时,我没有得到 navigationBar 也没有 rightBarButtonItem。我尝试将它添加到 collectionView 的 didSelectItemAt 中的 PurpleVC 的 navigationItem,但没有显示任何内容,所以我尝试将它添加到 PurpleVC 的 viewDidLoad 中,但也没有显示任何内容。

紫色风投:

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 没有显示?

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