使用按钮从一个视图控制器转换到另一个视图控制器
因此,我创建了一个包含基本逻辑的登录页面。如果用户名和/或密码为空,则显示错误消息。如果它们已满,则转换到下一页(主页)。我创建了一个第二的ViewController上的脚本中,创造了SecondViewController”我然后限定的相应的ViewController类。‘SecondViewController’使用按钮从一个视图控制器转换到另一个视图控制器
在第一ViewController.swift文件,我使用此代码:
func transition(Sender:UIButton!)
{
let secondViewController: SecondViewController = SecondViewController()
self.presentViewController(secondViewController, animated:true, completion:nil)
}
然而,当我测试它时,按下登录按钮(当用户名和密码都填满后)将我转移到黑屏而不是第二个视图控制器。有什么想法做什么?
如果你想在视图包含的东西加到它的故事板,你可以给它一个故事板ID(一下面的几个框,您可以在故事板中设置视图控制器的类)。
如果你给它例如ID“secondVC”你可以创建使用以下它:
let secondViewController = storyboard?.instantiateViewControllerWithIdentifier("secondVC") as? SecondViewController
你不能使用默认的初始化方法初始化视图控制器。
您应该在故事板中创建一个视图控制器场景,在其上添加一个唯一的标识符,使用instantiateViewControllerWithIdentifier:
实例化它,然后像显示它一样进行显示。
可以_totally_使用默认初始化一个视图控制器init方法,你只是不能指望视图会从故事板中填充。 – paulrehkugler
或根本没有人口。它的视图对象将是空白的。因此,唯一有用的视图控制器类型是重写loadView以手动创建视图层次结构的视图控制器。 –
从XIB加载视图控制器时存在相同的问题。你应该使用'initWithNibName:bundle:' –
您需要在Storyboard中的视图控制器之间进行切换,并调用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)
}
基本上有三种方法可以做到这一点
1)创建赛格瑞的故事板,但如果你从该项目
2单赛格瑞使用prepareforSegue和performSegue方法在呈现视图控制器 覆盖FUNC prepareForSegue(赛格瑞它只会工作):UIStoryboardSegue,发件人: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
这工作!非常感谢! –