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

标签 ios swift uiviewcontroller

  • 我有三个 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/

相关文章:

ios - 如何让 json 填充 Swift 3 中的 UITableView?

Swift 中的 iOS 图像查看器,以编程方式

ios - 从 swift 派生的 obj-c 类的类别

objective-c - 第二次调用 loadView 时,iOS 5 不会自动旋转 View

iphone - 快速返回到 RootViewController

ios - 当屏幕在同一个 View Controller 中旋转时替换 UIViews

ios - 展开可选内容时,“AnyObject”无法转换为 'String'

ios - "Open In..."移动 safari 与邮件或其他 iOS 应用程序

swift - 从 UIImagePicker 上传图片到 Firebase

swift - 滑动 Action 总是有删除