Swift 5. 如何在按钮触摸时显示或显示 ViewController?没有故事板(以编程方式)

Swift 5. How present or show ViewController on button touch? Without Storyboard (programmatically)

如何 show()persent() VC 触摸按钮?我应该写什么代码?

首先,使用故事板

如果您正在使用故事板。你应该连接你的按钮视图故事板。

@IBAction fileprivate func handlePresentingView(_ sender: UIButton) {
  let vc = SecondVC() 
  present(vc, animated: true, completion: nil)
}

二、程序化

1: 如果您以编程方式工作 在 viewDidLoad 中添加以下行。

    mybutton.addTarget(self, action: #selector(handlePresentingVC(_:)), for: .touchUpInside)

2:你的操作方法

  @objc func handlePresentingVC(_ sender: UIButton) {
    let vc = SecondVC()
    present(vc, animated: true, completion: nil)
  }

In my example, I'm assuming that you don't have a storyboard file for your SecondVC view controller.

If SecondVC is connected to a storyboard view controller, you will need to change the instantiation of your secondVC object inside of your button's action method.

1: Select 你的故事板中的 SecondVC 的视图控制器。

2:给它添加一个Storyboard ID。

3:将按钮的操作方法更改为以下内容。

  @objc func handlePresentingVC(_ sender: UIButton) {
        let storyboard = UIStoryboard.init(name: "Main", bundle: nil)
        let secondVc = storyboard.instantiateViewController(withIdentifier: "SecondVC") as! SecondVC

    present(secondVc, animated: true, completion: nil)
  }

在Swift5和iOS13

默认的模式呈现样式是卡片。这会在顶部显示上一个视图控制器,并允许用户滑开显示的视图控制器。

要保留旧样式,您需要像这样修改按钮操作方法中的视图控制器:

secondVc.modalPresentationStyle = .fullScreen

这对于以编程方式创建的控制器和故事板创建的控制器都是相同的。