我想知道如何使用代码/编程方式创建一个在单击登录按钮后移动到登录页面的功能。
这是我的代码:
final class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let loginButton = UIButton(frame: CGRectMake(20, 640, 175, 75))
loginButton.setTitle("Login", forState: UIControlState.Normal)
loginButton.backgroundColor = UIColor.init(red: 255, green: 215, blue: 0, alpha: 0.8)
loginButton.setTitleColor(UIColor.blackColor(), forState: UIControlState.Normal)
loginButton.titleLabel!.font = UIFont(name: "StarJediSpecialEdition", size: 30)
loginButton.addTarget(self,
action: #selector(ViewController.tapActionButton),
forControlEvents: UIControlEvents.TouchUpInside)
self.view.addSubview(loginButton)
}
func tapActionButton(sender:UIButton!) {
print("Button is working")
}
}
最佳答案
有多种方法可以创建登录页面 UIViewController:
- 例如,从 xib,您可以从此类继承您的 Controller :
class XibLoadedVC: UIViewController {
required init?(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") }
required init() {
print("init \(type(of: self))")
let bundle = Bundle(for: type(of: self))
super.init(nibName: String(describing: type(of: self)), bundle: bundle)
}
}
或者只是
let controller = LoginPageViewController(nibName: "LoginPageViewController", bundle: nil)
- 来自 Storyboard:
let storyboard = UIStoryboard(name: "MyStoryboardName", bundle: nil)
let loginPage = storyboard.instantiateViewControllerWithIdentifier("LoginPageViewController") as! LoginPageViewController
有多种方法可以显示 Controller ,具体取决于您创建它的方式:
- 您可以向 Controller 展示:
func tapActionButton(sender: UIButton!) {
let loginPage = LoginPageViewController()
self.present(loginPage, animated: true)
}
- 使用 navigationController 以编程方式推送:
navigationController?.pushViewController(loginPage, animated: true)
需要 UINavigationController 才能工作。由于您无法确定,您的 Controller 是否在导航 Controller 堆栈中,有可选的 navigationController?
不会破坏应用程序:)
- Storyboard和 Segues:
在您的 ViewController 和 LoginPageViewController 之间创建 segue。
给你的 segue 一个标识符和展示风格。对于这种情况,它将是 Show
现在在你的 ViewController 重写下面的方法
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "YourSegueIdentifier"
let loginPage = segue.destinationViewController as! LoginPageViewController
}
}
在 loginButton 点击 Action 时:
func tapActionButton(sender: UIButton!) {
performSegueWithIdentifier("YourSegueIdentifier", sender: nil)
}
大功告成。
附言 此外,还有现代 SwiftUI 方法可以完成所有这些操作,您可以查看教程和官方文档。
关于swift - 以编程方式移动到下一个 View Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39339774/