xcode - 使用 Segue 自动加载 SecondViewController
问题描述
如何与内部方法SecondViewController
同时加载?ViewController
viewDidLoad()
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
}
}
}
解决方案
这个
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
}
}
推荐阅读
- sql - 选择列中特定 ID 和列表名称价格高于同一列的行?
- sql - 我可以在 Aqua Data Studio 中跨多个服务器进行查询吗?
- python-3.x - Popen 不运行我的 exe
- java - 删除多个键——它可以是事务性的吗?
- java - JavaFX 任务可调用
- laravel - Laravel 5 显示错误,即使它调试模式设置为 false 并且 env 设置为生产
- google-cloud-ml - 谷歌 ml-engine 中的 TPOT 模型
- c# - 如何在 CSS 附加示例中设置 WPF 按钮的样式
- spring - Spring验证:使用两个验证器时获取“验证器的无效目标”
- dart - 导航未定义名称上下文