Swift 5. 如何在按钮触摸时呈现或显示 ViewController?没有情节提要(以编程方式)

Posted

技术标签:

【中文标题】Swift 5. 如何在按钮触摸时呈现或显示 ViewController?没有情节提要(以编程方式)【英文标题】:Swift 5. How present or show ViewController on button touch? Without Storyboard (programmatically) 【发布时间】:2020-02-16 11:01:40 【问题描述】:

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

【问题讨论】:

【参考方案1】:

首先,使用故事板

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

@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)
  

在我的示例中,我假设您没有故事板文件 你的SecondVC 视图控制器。

如果SecondVC 连接到故事板视图控制器,您将 需要更改您的 secondVC 对象的实例化 您的按钮的操作方法。

1:在情节提要中选择 SecondVC 的视图控制器。

2:为其添加情节提要 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)
  

在 Swift 5 和 iOS 13 中

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

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

secondVc.modalPresentationStyle = .fullScreen

这对于以编程方式创建的控制器和情节提要创建的控制器都是一样的。

【讨论】:

当我使用此代码时,它向我发送了一个问题:Attempt to present <EventsOn.EventsViewController: 0x102f5d640> on <EventsOn.LoginViewController: 0x102f5dc50> whose view is not in the window hierarchy! 能否提供您的viewDidLoad 代码以及按钮的操作方法? 您可以尝试在按钮的操作方法中添加以下行:secondVc.modalPresentationStyle = .fullScreen showpresent 有什么区别?我了解 segues 的区别,但不了解警报。 ***.com/questions/25966215/…

以上是关于Swift 5. 如何在按钮触摸时呈现或显示 ViewController?没有情节提要(以编程方式)的主要内容,如果未能解决你的问题,请参考以下文章

(Swift) 如何使用触摸按钮更改 pageviewcontroller 中的视图

触摸另一个控件(如按钮)Swift 2.0时如何隐藏键盘

Swift - 如何在自定义 AlertController 中点击按钮时呈现 ViewController

如何在 Swift 中将触摸事件发送到 nextResponder

在 Swift 3 中突出显示(或点击)按钮时如何更改 UIButton 边框颜色?

在swift5中按下特定按钮时如何使用代码呈现tabBarViewController(在情节提要中创建)?