应用程序的教程屏幕

时间:2014-01-07 13:51:43

标签: ios objective-c xcode uistoryboard

您好我找到了一个很棒的教程来显示我的应用程序的概述。在查看本教程视图后,您将如何返回主应用程序? 以下是本教程的位置以及所有source code

我的应用视图在故事板中,我有一个导航控制器,其中包含我的rootviewcontroller。 我希望在显示教程视图的最后一页后返回导航控制器的rootviewcontroller。 如果你能提供帮助,谢谢你。

enter image description here

这是我的故事板: 我用来加载教程的代码是AppDelegate中的代码:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
     /*  This loads up the xib but I can't get back to the storyboard rootViewController */
    if (tutorialHasBeenSeen == false) {
        self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
        // Override point for customization after application launch.
        self.appViewController = [[APPViewController alloc] initWithNibName:@"APPViewController" bundle:nil];
        self.window.rootViewController = self.appViewController;
        [self.window makeKeyAndVisible];
        tutorialHasBeenSeen =TRUE;

    }


    return YES;
}

我是否会尝试在方法中弹出到AppViewController.m中的rootView:

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController {

    NSUInteger index = [(APPChildViewController *)viewController index];

    index++;

    if (index == 5) {
        return  nil;
    }
        return [self viewControllerAtIndex:index];

}

1 个答案:

答案 0 :(得分:1)

您是否尝试过使用

[self.navigationController popToRootViewControllerAnimated:YES];

修改

现在,我知道你要做什么,我建议改变你的方法: 如果您不应该选择是否应该在应用程序委托中的didFinishLaunchingWithOptions方法中提供 Tutorial ,为什么不总是从应用程序的第一个视图控制器开始,并在此确定是否用户应该使用 Tutorial 进行显示,这样您就可以在已建立的显示分层内容的导航方式中调用第一个视图控制器中的 Tutorial 视图控制器。

enter image description here

您无法从教程转到第一个视图控制器的原因是您将教程指定为窗口视图控制器直接来自app delegate。因此,无法从教程第一个视图控制器“返回”,要解决此问题,我可以考虑两个选项,< / p>

  • 在所需的时刻,将应用程序的窗口视图控制器更改为第一个视图控制器,而不是已经分配的 Tutorial 视图控制器。正如你可能猜测的那样,这是一种棘手而且不干净的方式。
  • 在您的应用中设置正确的导航层次结构,因此第一个视图控制器应显示 Tutorial 视图控制器。之后,在您想要的时刻,您只需关闭或弹出教程,然后返回第一个视图控制器。

作为结论,

1.不要从AppDelegate出示您的教程,因此请保持以下方法清洁或根据需要执行其他操作。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    return YES;
}

2.从将作为第一个视图控制器的视图控制器,使用seguescode调用您的教程,应用您想要的逻辑来确定用户何时应该看教程。如果在应用启动时正确完成并且教程出现,则您首先显示第一个视图控制器

将不可见

3.从您的 Tutorial 视图控制器,在所需的时刻dismisspop(取决于您的导航)您的视图控制器,以便您可以返回到第一个视图控制器