繁体   English   中英

在Swift 4中从ParentViewController呈现uiviewcontroller

[英]Present uiviewcontroller from ParentViewController in Swift 4

我有一个有2个子视图的parentview,我试图将uiviewcontroller显示为“以模态形式呈现”,我使用以下代码:

class ParentCtrl: ButtonBarPagerTabStripViewController {
    let obj = ChildCtrl()
override func viewDidLoad() {
        super.viewDidLoad()
        obj.someClassMethod()
    }
}

class ChildCtrl: UIViewController, IndicatorInfoProvider {
   struct Storyboard {
    static let segue_id = "segue_id"
}
   public func someClassMethod(){
        self.performSegue(withIdentifier: Storyboard.segue_id, sender: self)
    }

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if(segue.identifier == Storyboard.segue_id){
            let destino = segue.destination as! NewViewController
            destino.seleccion = seleccion
        }
    }
}

但是我收到以下错误:

没有标识符为“ segue_id”的segue但是,我有该标识符,因为如果我复制:

self.performSegue(withIdentifier: Storyboard.segue_id, sender: self)

在viewDidload方法中,展示了NewViewController

我该如何解决?

指定情节提要Segue标识符 ,即

在此处输入图片说明

并在编写代码执行segue时使用该ID,即

self.performSegue(withIdentifier: "segue_id", sender: self)

编辑:

storyboard创建obj ,即

let obj = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "ChildCtrl") as! ChildCtrl

您只是在创建ChildCtrl的实例,而不是使用故事板中的实例。 结果,该实例对任何故事板文件一无所知,因此没有上下文可以执行segue。

您需要从屏幕上的ChildCtrl实例执行segue。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM