因此,我创建了一个包含基本逻辑的登录页面。如果用户名和/或密码为空,则会显示错误消息。如果它们已满,则转换到下一页(主页)。我在故事板上创建了第二个ViewController,并创建了一个SecondViewController“。然后我将相应的ViewController类定义为”SecondViewController“。
在第一个ViewController.swift文件中,我使用了以下代码:
func transition(Sender:UIButton!)
{
let secondViewController: SecondViewController = SecondViewController()
self.presentViewController(secondViewController, animated:true, completion:nil)
}
当我测试它时,按下登录按钮(当用户名和密码都填满时)将我转移到黑屏而不是第二个视图控制器。关于该怎么做的任何想法?
答案 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