gpt4 book ai didi

ios - 如何在 swift 3 中按下按钮时转到另一个 View Controller

转载 作者:行者123 更新时间:2023-11-28 11:01:55 25 4
gpt4 key购买 nike

此代码在 OverlayView.swift 中

protocol OverlayViewControllerDelegate {
func didCancel(overlayView: OverlayView)
func didShoot(overlayView: OverlayView)
}

class OverlayView: UIView {

@IBOutlet weak var cameraLabel: UILabel!

var delegate: OverlayViewControllerDelegate! = nil


@IBAction func cancel(_ sender: AnyObject) {
cameraLabel.text = "I want to exit"
delegate.didCancel(overlayView: self)


}

我只想在点击取消按钮的任何时候。是将当前页面转换成view controller的页面。我想从页面 a 转到页面 b。

最佳答案

  1. 它应该是 OverlayViewDelegate 而不是 OverlayViewControllerDelegate 因为它不是您发送事件的 Controller ,对吗?从 OverlayView 的角度来看,谁在实际实现此协议(protocol)并不重要,但更重要的是谁在发送事件。

  2. 你可能在某个地方有一个 View Controller ,它将实现这个协议(protocol):

class ViewController: UIViewController, OverlayViewDelegate {
//another code
func didCancel(overlayView: OverlayView) {
//show a new controller
}
}
  1. 以编程方式显示新 Controller 。您可以以模态方式呈现它或将其推送到导航堆栈。如果您只显示一个 Controller 并且没有要显示的更深层次的 View Controller ,则第一种方法更可取,第二种方法是将越来越多的 Controller 推送到导航堆栈中。

推送到导航栈:

let newViewController = AnotherViewController()
self.navigationController?.pushViewController(vc, animated: true) //your current vc should be already in a UINavigationController

现在模态示例:

let newViewController = AnotherViewController()
self.present(newViewController, animated: true, completion: nil)
  1. 展示了一个使用 segues 的新 Controller 。您可以通过按下右键拖动在 Storyboard中从一个 View Controller 创建一个 segue 到另一个 View Controller 。如果您分配了 Storyboard ID,则可以从如下代码执行该 segue:

performSegue(withIdentifier: "segueIdentifier", sender: nil)
performSegue(withIdentifier: "segueIdentifier", sender: someUsefulData)

segue 本身可以推送模态呈现,只需在创建时选择正确的类型即可。

  1. 这很可能是您的情况。如果您已经显示了一个 View Controller 并且想返回,请使用 dismiss(animated:completion:)当你处理回调时:

func didCancel(overlayView: OverlayView) {
dismiss(animated: true, completion: nil)
}
  1. 如果您已经将 View Controller 推送到导航堆栈,您可以使用 popViewController(animated:) 返回:

func didCancel(overlayView: OverlayView) {
navigationController?.popViewController(animated: true)
}

关于ios - 如何在 swift 3 中按下按钮时转到另一个 View Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40227585/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com