首页 文章

使用以编程方式创建的视图控制器展开segues

提问于
浏览
-1

我有一个视图控制器( PhotoViewController ),它有一个子视图控制器( CameraViewController ) . 在 CameraViewController 中,有一个按钮可以通过其他以编程方式创建的视图控制器来设置segueing链 . 在最后一个视图控制器上,我想放松到原始的 PhotoViewController . 我发现的所有示例都要求您在故事板中拥有视图控制器,这是我没有的 . 我怎样才能做到这一点?

2 回答

  • 0

    你还没有明白什么是一个放松的segue . 它只是一种反转创建当前视图控制器的调用并将其放入视图控制器层次结构的方法,在特殊情况下,您希望通过故事板中的segue触发它 .

    • 例如,如果您(或故事板)调用了 pushViewController (对于推送的视图控制器),则展开segue只是一种调用 popViewController 的方法 .

    • 或者,如果您调用(或故事板)调用 present (对于模态呈现的视图控制器),则展开segue只是一种调用 dismiss 的方法 .

    如果您在故事板中没有视图控制器,则不需要展开segue;你只需要在代码中直接执行这两项操作中的一项 .

    记住,我们都相处很好,没有放松的细分 . 事实上,我们都相处多年没有故事板!你也可以 .

  • 0

    如果您的原始PhotoViewController是在故事板上创建的,并且您希望从程序化制作的VC中转换回来,那么您可以使用它而不是展开它,因为unwindSegues仅适用于故事板 .

    在这里展示您的PhotoViewController是其中一种方法 .

    func presentPhotoViewController() {
    let storyboard = UIStoryboard(name: "YourStoryBoardName", bundle: nil)
    if let photoViewController =  storyboard.instantiateViewController(withIdentifier: "PhotoViewControllerUniqueId") as? PhotoViewController {
        // Pass any data you have (Optional)
        self.present(photoViewController, animated: true, completion: nil)
    
        // If your PhotoViewController is embeded in a navigation Controller do the following.
         //let navController = UINavigationController(rootViewController: photoViewController)
         //self.present(navController, animated: true, completion: nil)
    }
    

    }

相关问题