[英]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.