0

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

我正在使用故事板。我有一个 NavVC,它有一个 RedVC 作为 root,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。我尝试将其添加到navigationItemcollectionView 中的 PurpleVC 中,didSelectItemAt但没有显示任何内容,因此我尝试将其添加到 PurpleVC 中,viewDidLoad但那里也没有显示任何内容。

紫色VC:

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 以模态方式呈现时,为什么我navigationBar并没有显示?rightBarButtonItem

4

1 回答 1

0

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

于 2017-06-15T07:14:13.980 回答