抱歉,如果这是一个重复的问题,但我已经查看了很多问题,但没有找到正确的答案。
基本上,如果应用程序首次启动,则应加载具有“如何”屏幕的UIViewController。如果没有首次启动,则会加载标签栏控制器。
要做到这一点,我有一个UIViewController作为初始视图控制器,然后模态segra到标签栏和uiviewcontroller
两个模态segue称为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;
是我要加载的第一个标签栏的viewcontroller。
我这样做是否正确?我应该使用导航根控制器吗?
提前致谢
答案 0 :(得分:1)
如果它的唯一目的是决定呈现哪个其他控制器(BTW,调用模态segue pushToTabBar是一个令人困惑的名字 - 你正在做一个演示而不是推送),则不需要FirstViewController。您可以在选项卡栏控制器的第一个选项卡中的控制器的viewDidAppear方法中执行逻辑。如果它是第一次启动,则以模态方式呈现TutorialViewController而不显示动画,因此它将是用户看到的第一件事。当用户完成教程后,关闭该控制器,然后返回到第一个选项卡视图控制器。您应该将Tabed控制器索引0处的控制器的segue连接到TutorialViewController。
答案 1 :(得分:0)
你最好从Tab Bar控制器上做segue。这样,您可以忽略模态演示文稿,当教程segue消失时,您已经在标签栏中。