在SWIFT中的xib文件上呈现ViewController

Hen*_*own 7 popup uiviewcontroller presentviewcontroller swift

我有一个xib文件,我在UIView上创建了一个弹出控制器.当在视图控制器1上按下按钮时,此弹出控制器会动画.然后我在UIView上有一个按钮,按下时我想要呈现另一个视图控制器(视图控制器2).代码看起来像:

class PopUpViewControllerSwift : UIViewController {

  @IBAction func goToVC2(sender: UIButton) {

        self.removeAnimate()

        let VC2: VC2 = self.storyboard?.instantiateViewControllerWithIdentifier("VC2") as VC2
        var modalStyle: UIModalTransitionStyle = UIModalTransitionStyle.CoverVertical
        VC2.modalTransitionStyle = modalStyle
        presentViewController(VC2, animated: true, completion: nil)

    }
}
Run Code Online (Sandbox Code Playgroud)

虽然按下按钮时它会崩溃,没有错误或回调或任何东西.显然,如果它只是一个普通的视图控制器,这通常会起作用,但是因为我在一个弹出的视图中进行了操作,它已经在另一个视图上进行了动画我认为这是问题所在?

有人可以帮忙吗?

谢谢

Mic*_*ael 12

我是用一种UICollectionView didSelectItemAtIndexPath方法做到的.

// Register Nib
let newViewController = NewViewController(nibName: "NewViewController", bundle: nil)

// Present View "Modally"
self.presentViewController(newViewController, animated: true, completion: nil)
Run Code Online (Sandbox Code Playgroud)

我设置IDViewController,以相同的文件名,所以我就一定要引用的权利ViewController.

  • 在swift 4中使用:self.present() (2认同)

小智 0

确保self.storyboard不为零。

还要确认这VC2是 Storyboard 文件中 ViewController 的身份之一。

我希望它可以帮助你。


如果 VC2 在故事板文件中,请尝试使用以下命令获取 VC2

let storyboard = UIStoryboard(name: "YourStoryboardName(maybe 'Main')", bundle: nil)
let vc2 = storyboard.instantiateViewControllerWithIdentifier("VC2") as VC2
Run Code Online (Sandbox Code Playgroud)

或者如果 VC2 在 nib 文件中,请尝试使用以下命令获取 VC2

let vc2 = VC2(nibName: "YourNibName", bundle: nil)