0

アプリが起動したときに初めてツアーを表示したい。

間違いなく私はいくつかを使用しますNSUserDefaults。しかし、私は使用storyboardsしていて、ロードするのとは別のロードをしたいと思っていviewControllersます。

if(firstTime)
Load TourController 
else
Load mainScreen

どうすればこれを実装できappdelegateますか?

4

2 に答える 2

1

アプリの最初の起動時の動作は異なりますが、アプリデリゲートには実装していません。デリゲートのコードを使用して、起動数を追跡しました。次に、メインのビューコントローラをビューツリーの一番上に配置する必要があるため、そこから最初の起動動作をモーダルにプッシュしました。

- (void)applicationDidBecomeActive:(UIApplication *)application {

    // the following forces new behaviour on 1st launch. 
    int launches;
    launches = [[NSUserDefaults standardUserDefaults] integerForKey:LAUNCH_NUMBER_KEY];
    // note: uninitialised user default returns 0.

    if (!launches) {
        // view did load will check again and push the first load tour. 
        // by returning here, the launch value is not incremented. 
        [self.viewController viewDidLoad];
        return;
    } 
}       

次に、でMainViewController viewDidLoad、値を再度確認し、firstLoadビューをモーダルにプッシュします。

- (void)viewDidLoad {
    //... more code here.
    BOOL disclaimerAccepted = [[NSUserDefaults standardUserDefaults] boolForKey:DISCLAIMER_ACCEPT_KEY];
    if (!disclaimerAccepted) {
    [self showFirstLoadView];
    return;
    }
}

-(void) showDisclaimerView {

    // Display the nav controller modally.
    FirstLoadVC *firstLoadVC = [[FirstLoadVC alloc] initWithNibName:@"firstload" bundle:[NSBundle mainBundle]];
    [firstLoadVC autorelease];

    UINavigationController*  firstLoadNavController = [[UINavigationController alloc]initWithRootViewController:firstLoadVC]; 

    [self presentModalViewController:firstLoadNavController animated:YES];

    [firstLoadNavController release];
}
于 2012-09-01T07:57:25.373 に答える
1
if (firstTime) {
   self.window.rootViewController = self.fisrtController; 
} else {
   self.window.rootViewController = self.mainController;
}
于 2012-09-01T07:31:10.073 に答える