0

抱歉,如果这是一个重复的问题,但我查看了很多问题并没有找到正确的答案。

基本上,如果应用程序是在首次启动时,应该加载一个带有 How To 屏幕的 UIViewController。如果不是第一次启动,它会加载一个标签栏控制器。

为此,我有一个 UIViewController 作为初始视图控制器,然后模态连接到选项卡栏和 uiviewcontroller

在此处输入图像描述

这两个模态序列称为 pushTabBar 和 pushHowToUse。

这是“firstviewcontroller”的代码

@implementation FirstViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];

    [self isFirstRun];
    // Do any additional setup after loading the view.
}
- (BOOL) isFirstRun
{
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    if ([defaults objectForKey:@"isFirstRun"])
    {

        [self performSegueWithIdentifier: @"pushTabBar" sender: self];

        return NO;

    }

    [defaults setObject:[NSDate date] forKey:@"isFirstRun"];
    [[NSUserDefaults standardUserDefaults] synchronize];
    NSLog(@"right before");
    [self performSegueWithIdentifier: @"pushHowToUse" sender: self];



    return YES;
}
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if ([segue.identifier isEqualToString:@"pushTabBar"]) {

        GetInfoViewController *getInfoViewController = segue.destinationViewController;
        NSLog(@"loadtabbar");

    }
    if ([segue.identifier isEqualToString:@"pushHowToUse"]) {

         TutorialViewController *tutorialViewController = segue.destinationViewController;
        NSLog(@"loadhowto");

    }
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

我不确定要为标签栏控制器推送/加载什么:

  GetInfoViewController *getInfoViewController = segue.destinationViewController;

是我要加载的第一个标签栏的视图控制器。

我这样做正确吗?我应该使用导航根控制器吗?

提前致谢

4

2 回答 2

1

如果 FirstViewController 的唯一目的是决定要呈现哪个其他控制器,则不需要 FirstViewController(顺便说一句,调用模态 segue pushToTabBar 是一个令人困惑的名称——您正在做的是演示而不是推送)。您可以在选项卡栏控制器的第一个选项卡中执行控制器的 viewDidAppear 方法中的逻辑。如果是第一次启动,则以模态方式呈现 TutorialViewController,不带动画,这样用户就会首先看到它。当用户完成教程后,关闭该控制器,然后您将返回到第一个选项卡视图控制器。您应该将标签栏控制器索引 0 处的该控制器的 segue 连接到 TutorialViewController。

于 2013-08-14T04:56:04.713 回答
0

你最好从 Tab Bar 控制器中进行 segue。这样,您可以关闭模​​态演示文稿,当教程转场消失时,您已经在标签栏了。

于 2013-08-14T02:01:20.087 回答