繁体   English   中英

如何基于首次加载来加载TabBarController或UIViewController

[英]How to load TabBarController or UIViewController based on first load

抱歉,如果这是一个重复的问题,但是我看过很多问题,但找不到正确的答案。

基本上,如果该应用程序是首次启动,则应加载带有“操作方法”屏幕的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;

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

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

提前致谢

如果FirstViewController的唯一目的是确定要呈现的其他控制器,则无需使用FirstViewController(顺便说一句,调用模态序列pushToTabBar是一个令人困惑的名称-您在执行呈现而不是推送)。 您可以在选项卡栏控制器的第一个选项卡中的控制器的viewDidAppear方法中执行逻辑。 如果是第一次启动,请以模态形式显示TutorialViewController,不带动画,因此这将是用户首先看到的内容。 当用户完成本教程的操作后,请关闭该控制器,然后您将回到第一个选项卡视图控制器。 您应该将标签栏控制器索引0处的那个控制器的序列连接到TutorialViewController。

您最好从Tab Bar控制器进行选择。 这样,您就可以消除模态演示,而当教程选择消失时,您已经在标签栏上了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM