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
show
和present
有什么区别?我了解 segues 的区别,但不了解警报。 ***.com/questions/25966215/…以上是关于Swift 5. 如何在按钮触摸时呈现或显示 ViewController?没有情节提要(以编程方式)的主要内容,如果未能解决你的问题,请参考以下文章
(Swift) 如何使用触摸按钮更改 pageviewcontroller 中的视图
Swift - 如何在自定义 AlertController 中点击按钮时呈现 ViewController
如何在 Swift 中将触摸事件发送到 nextResponder