在启动屏幕关闭后立即呈现特定视图控制器

时间:2018-02-28 05:49:05

标签: swift viewdidappear

我有一个单屏教程View Controller。我希望这个教程VC只显示一次(userdefaults),但我希望从启动屏幕完成时平滑过渡 - >教程VC。

现在 - 启动屏幕完成,然后App的主界面显示一瞬间,然后教程VC显示出来。我想删除主界面的“闪烁”。

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    if !didShowTut {
        fireTutorial()
        didShowTut = true
    }
}

func fireTutorial() {
    let tutVC = UIStoryboard(name: "FirstTutorial", bundle: nil).instantiateViewController(withIdentifier: "TutorialSBID") as UIViewController
    tutVC.modalPresentationStyle = .overCurrentContext
    self.present(tutVC, animated: false, completion: nil)
}

从启动屏幕创建平滑过渡的任何帮助 - >教程VC将不胜感激。

3 个答案:

答案 0 :(得分:0)

您正在viewDidAppear func上展示tutVC,该func在加载屏幕后执行。

尝试在override func viewDidLoad()或在加载屏幕之前执行的override func viewWillAppear(_ animated: Bool)方法上调用fireTutorial()。

答案 1 :(得分:0)

我采用了稍微不同的方法来解决这个问题。

我将主应用VC嵌入到导航控制器中,然后在App Delegate didFinishLaunchingWithOptions中推送tutorialVC。

let tutorialVC = UIStoryboard(name: "FirstTutorial", bundle: nil)
let firstVC = tutorialVC.instantiateViewController(withIdentifier: "TutorialSBID") as UIViewController
if let navigationController = self.window?.rootViewController as? UINavigationController
{
    navigationController.pushViewController(firstVC, animated: false)
}
return true

答案 2 :(得分:-1)

在viewWillAppear或viewWillLayoutSubviews()中编写此代码,而不是viewDidAppear