使用按钮从一个视图控制器转换到另一个视图控制器

时间:2015-07-10 00:50:58

标签: ios xcode swift

因此,我创建了一个包含基本逻辑的登录页面。如果用户名和/或密码为空,则会显示错误消息。如果它们已满,则转换到下一页(主页)。我在故事板上创建了第二个ViewController,并创建了一个SecondViewController“。然后我将相应的ViewController类定义为”SecondViewController“。

在第一个ViewController.swift文件中,我使用了以下代码:

func transition(Sender:UIButton!)
{
    let secondViewController: SecondViewController = SecondViewController()
    self.presentViewController(secondViewController, animated:true, completion:nil)

}

当我测试它时,按下登录按钮(当用户名和密码都填满时)将我转移到黑屏而不是第二个视图控制器。关于该怎么做的任何想法?

4 个答案:

答案 0 :(得分:1)

您不能仅使用默认的init方法初始化视图控制器。

您应该在故事板中创建一个视图控制器场景,在其上添加唯一标识符,使用instantiateViewControllerWithIdentifier:对其进行实例化,然后像您一样显示它。

答案 1 :(得分:1)

您希望在故事板中的视图控制器之间建立一个segue,然后调用self.performSegueWithIdentifier()

或者你可以给你的`UIViewController一个标识符并以编程方式呈现它:

let storyboard = UIStoryboard(name: "MyStoryboardName", bundle: nil)
let secondViewController storyboard.instantiateViewControllerWithIdentifier("") as? SecondViewController
if let secondViewController = secondViewController {
    self.presentViewController(secondViewController, animated:true, completion:nil)
}

答案 2 :(得分:1)

如果您希望视图包含故事板上添加的内容,您可以为其提供一个Storyboard ID(下面几个框,您可以在故事板中设置视图控制器的类)。

如果您举例说明ID" secondVC"然后,您可以使用以下内容创建它:

let secondViewController = storyboard?.instantiateViewControllerWithIdentifier("secondVC") as? SecondViewController

答案 3 :(得分:1)

基本上有三种方法可以做到这一点

1)在故事板中创建segue,但只有当你从该项目中获得单个segue时它才会起作用

2)在你的呈现视图控制器中使用prepareforSegue和performSegue Methods    override func prepareForSegue(segue:UIStoryboardSegue,sender:AnyObject?){

if segue.identifier == "YourIdentifier" {
  let controller = segue.destinationViewController as!secondViewController
}

}

然后在IBACtion中使用它

performSegueWithIdentifier("YourIdentifier", sender:sender)

3)(推荐一个)

let controller = self.storyboard?.instantiateViewControllerWithIdentifier("ContactsVC")! as! ContactsVC 

self.presentViewController(controller, animated:true, completion:nil