首页 > 解决方案 > 使用 Segue 自动加载 SecondViewController

问题描述

如何与内部方法SecondViewController同时加载?ViewControllerviewDidLoad()

Segue 的类型是Sheet.

import Cocoa

class ViewController: NSViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        self.performSegue(withIdentifier: "secondVC", sender: self)
    }

    func prepareforSegue(segue: NSStoryboardSegue, sender: Any?) {
        if let identifier = segue.identifier, identifier == "secondVC" {
            _ = segue.destinationController as? SecondViewController
        }
    }
}

在此处输入图像描述

标签: xcodemacoscocoaswift4segue

解决方案


这个

self.performSegue(withIdentifier: "secondVC", sender: self)

在内部不起作用viewDidLoad考虑将其包装在 Dispatch-after 或 bool 标志中viewDidAppear

DispatchQueue.main.asyncAfter(deadline:.now() + 2 ) {
   self.performSegue(withIdentifier: "secondVC", sender: self)
}

或者

var once = true
override func viewDidAppear() {
   super.viewDidAppear()
   if once {
        self.performSegue(withIdentifier: "secondVC", sender: self)
        once = false
   }
}

推荐阅读