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

3

我有一个1屏幕的教程视图控制器。 我希望此教程VC仅显示一次(用户默认设置),但我希望从启动屏幕完成到教程VC的转换平稳无缝。

现在 - 启动屏幕完成后,应用程序的主界面会显示一瞬间,然后教程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)
}

任何帮助实现从启动屏幕到教程视图控制器的平滑过渡都将不胜感激。

请将此代码写在viewWillAppear中,而不是viewDidAppear中。 - Bilal Awan
@Joe 第一次启动时,将教程VC设置为窗口的根视图控制器。当教程完成后,再次使用您应用程序的主界面更改窗口的根视图控制器。 - Shebin Koshy
@ShebinKoshy - 目前正在按照您的建议进行解决方案的工作。 - Joe
@Joe Cool。谢谢你的通知。 - Shebin Koshy
可能重复:https://dev59.com/D18d5IYBdhLWcg3w3FVk - Vladimir Grigorov
3个回答

0

你正在展示tutVC在viewDidAppear函数上,该函数在屏幕加载后执行。

尝试在override func viewDidLoad()override func viewWillAppear(_ animated: Bool)方法中调用fireTutorial(),这些方法在屏幕加载之前执行。


@Joe,哪一个是应用程序的根视图控制器? - Patrick Haralabidis
主VC是根。我想对于第一次应用程序加载,教程VC应该是根,就像Shebin上面建议的那样? - Joe
@Joe,这可能是因为您没有使用导航控制器,并且在故事板中将主VC设置为根。您可以添加一个导航控制器,将其设置为应用程序的入口点,并将主VC设置为导航控制器的根VC。之后,您就可以在ViewWillAppear中调用fireTutorial或设置模态segue。 - Patrick Haralabidis
@joe 两个视图控制器是否在同一个故事板中?如果是,您尝试使用segue进行呈现了吗? - Patrick Haralabidis
不,主要的应用程序界面和教程各有其自己的故事板。 - Joe
显示剩余3条评论

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

-1
请将此代码写在viewWillAppear或viewWillLayoutSubviews()中,而不是viewDidAppear中。

如果我将教程VC放在viewWillAppear中,它就不会加载,而是直接进入主应用程序界面。 - Joe
然后尝试在viewWillLayoutSubviews()中编写代码。 - Bilal Awan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接