gpt4 book ai didi

ios - 关闭一个 View Controller 并显示另一个 View Controller

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

  • 我有三个 ViewControllers - V1 V2 和 V3。
  • 一个按钮点击V1,ViewController V2显示动画水平翻转。
  • 现在在 V2 中点击一个按钮,ViewController 应该被关闭回到 V1 并显示 ViewController V3。

    我试过这段代码来实现这个功能。虽然它不起作用。请帮忙!

注意:V2 和 V3 在同一个 StoryBoard(开始)中。 V1 在不同的 Storyboard(主要)中。

var VC3 : ViewController3?

let mainStoryboard: UIStoryboard = UIStoryboard(name: "start",bundle: nil)

self.dismissViewControllerAnimated(false, completion: {
self.VC3 = (mainStoryboard.instantiateViewControllerWithIdentifier("ViewController3") as! ViewController3)
self.presentViewController(self.VC3!, animated: true, completion: nil)
})

更新 - 我收到此警告尝试在 View 不在窗口层次结构中的 ViewController2 上呈现 ViewController3!

最佳答案

我复制了您的查询并创建了 3 个 View Controller :VC1、VC2 和 VC3。我使用 Delegates 和 Segues 实现了这一点。 Storyboard Setup .

VC1.Swift:

class VC1: UIViewController, VC2Delegate {

override func viewDidLoad() {
super.viewDidLoad()

// Do any additional setup after loading the view.
}

func showVC3() {
self.performSegueWithIdentifier("VC1ToVC3", sender: nil)
}

// MARK: - Navigation
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "VC1ToVC2" {
if let destVC = segue.destinationViewController as? VC2 {
destVC.delegate = self
}
}
}

}

VC2.Swift:

protocol VC2Delegate {
func showVC3()
}

class VC2: UIViewController {
var delegate:VC2Delegate?

override func viewDidLoad() {
super.viewDidLoad()

// Do any additional setup after loading the view.
}

@IBAction func actBack(){
self.dismissViewControllerAnimated(true, completion: nil)
if let _ = delegate {
delegate?.showVC3()
}
}

}

关于ios - 关闭一个 View Controller 并显示另一个 View Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39823934/

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