的背景:
我有一个带有 5 个标签的应用程序。用户第一次导航到每个选项卡时,我想展示一个一次性的“教程”。我打算通过创建一个“TutorialViewController”来处理显示这些“教程”视图并具有用于下一步/返回等的按钮来做到这一点......
问题:我不确定用于实现是否显示这些屏幕并实例化“TutorialViewController”以显示它们的逻辑的最佳模式。目标是有一行代码(单个方法调用),如果需要,可以显示教程。我试图避免跨 5 个视图控制器的代码重复。问题是在哪里/如何实现这个单一的方法。作为 TutorialViewController 上的类方法?作为一个全局 C 函数?
我考虑过的事情:
1) 在 TutorialViewController 上实现一个名为“displayTutorialIfNecessary”的类方法。在这种情况下,每个有教程的视图控制器都会从它们的“viewDidAppear”方法中调用这个类方法。此类方法将检查教程是否已经显示,如果没有,它将实例化一个 TutorialViewController 对象来处理以显示它。在这个选项中,我想我必须从每个调用视图控制器传递“self”,并且类方法将使用它来显示 TutorialViewController。
2) 在 TutorialViewController 上实现一个名为“tutorialShouldBeDisplayedForScreen:”的类方法。在此选项中,每个调用视图控制器都将调用此方法,如果它返回 true,则每个 vc 将实例化并呈现将处理显示教程的“TutorialViewController”。
我确信有适合这种情况的“最佳实践”或模式,但我不确定最佳实现是什么。提前感谢您的建议。
总结一下:而不是在每个视图控制器中都有这样的东西:
if ([TutorialViewController shouldDisplayTutorialForScreen:<someEnum>])
{
TutorialViewController *myTutorialVC = [[TutorialViewController alloc] init];
[self displayModalViewController: myTutorialVC];
}
我想要更像这样的东西:
[FirstUseViewController displayTutorialIfNecessaryForScreen: <someEnum> forParentViewController: self];