【问题标题】:How to programmatically add a second view in swift 3如何以编程方式在 swift 3 中添加第二个视图
【发布时间】:2017-07-09 19:34:58
【问题描述】:

我试图从第一个视图上的按钮切换到第二个视图,并以编程方式执行此操作(不使用故事板上使用 segue 在视图之间切换的传统方式)

我当前的应用委托:

import UIKit

@UIApplicationMain
public class AppDelegate: UIResponder, UIApplicationDelegate {

    public var window: UIWindow?

    public func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

        window = UIWindow(frame: UIScreen.main.bounds)
        window?.makeKeyAndVisible()
        window?.rootViewController = UINavigationController(rootViewController: ViewController())

        return true
    }

第一个视图控制器中的按钮功能,按下时应该切换到新视图:

func signupAction (sender: UIButton!){

}

我已经创建了新的视图控制器文件:

class Signup: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        view.backgroundColor = UIColor.cyan
    }
}

基本上,我正在尝试将第一个视图控制器中的按钮转换到此注册视图控制器。

【问题讨论】:

  • 所以你想添加第二个视图控制器?当您的意思是视图控制器时,不要说视图。这些术语的含义不同,当您说要添加第二个视图时,听起来就像您要添加子视图,而不是新的视图控制器。
  • 你有一个导航控制器并且想在导航堆栈上推送一个新的视图控制器吗?您想以模态方式展示您的新视图控制器吗?

标签: ios swift


【解决方案1】:

如果您在 UINavigationController 中,您可以通过这种方式将 Signup 视图控制器推送到导航堆栈:

let storyboard = UIStoryboard(name: "Main", bundle: nil)
let signUpViewController = storyboard.instantiateViewController(withIdentifier: "signUpViewController") as! Signup
navigationController?.pushViewController(signUpViewController, animated: true)

如果您不在UINavigationController 并想展示它,您可以这样做:

let storyboard = UIStoryboard(name: "Main", bundle: nil)
let signUpViewController = storyboard.instantiateViewController(withIdentifier: "signUpViewController") as! Signup
self.present(signUpViewController, animated: true, completion: nil)

注意:不要忘记在情节提要中设置视图控制器的标识符。

【讨论】:

  • 我试图完全不使用情节提要,但我发现我需要通过导航控制器来推动它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-01
  • 1970-01-01
  • 2016-05-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多