Swift iOS -NavigationBar и RightBarButtonItem не отображаются

Я посмотрел на SO для ответа на это и не смог найти его. Программирование на самом деле не мое, но я собираюсь изучить его примерно в начале июля.

Я использую Раскадровки. У меня есть NavVC, у которого есть RedVC как корень, и 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 когда фиолетовый VC presented modally, Я пытался добавить его в PurpleVC navigationItem в collectionView 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)
   }
}

Как же мой navigationBar а также rightBarButtonItem не отображается, когда PurpleVC представлен модально?

1 ответ

Решение

Когда вы представляете контроллер, он не будет сопровождаться панелью навигации и элементами. Перейдите к файлу раскадровки purpleVC и вручную добавьте панель навигации и элементы. Надеюсь, это поможет!