在SWIFT中的xib文件上呈现ViewController

时间:2015-03-08 12:12:02

标签: swift uiviewcontroller popup presentviewcontroller

我有一个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)

    }
}

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

有人可以帮忙吗?

感谢

2 个答案:

答案 0 :(得分:9)

我是用UICollectionView didSelectItemAtIndexPath方法完成的。

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

// Present View "Modally"
self.presentViewController(newViewController, animated: true, completion: nil)

我将ID的{​​{1}}设置为与文件名相同,因此我一定会引用正确的ViewController

答案 1 :(得分:0)

确保self.storyboard不是零。

同时确认VC2是故事板文件中ViewController的标识之一。

我希望它可以帮到你。


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

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

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

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