0

NSLogアプリを実行しているときに メッセージが表示されますが、 nextviewcontroller(ウェルカム ページ) が表示されません。アクションを続行するために初めて呼び出したいです nextviewcontroller。この画面は、最初に実行したときにのみ初めて表示されます。状態は機能していnextviewcontrollerますが、来ていません。このコードを使用したので、

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{ 

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Configure logging framework

[DDLog addLogger:[DDTTYLogger sharedInstance]];

// Setup the XMPP stream

[self setupStream];
// Override point for customization after application launch.
BOOL launch = [[NSUserDefaults standardUserDefaults] boolForKey:@"LaunchingFirstTime"];

if(!launch){
    NSLog(@"first");
    [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"LaunchingFirstTime"];
    [[NSUserDefaults standardUserDefaults] synchronize];
    self.viewController1 = [[welcomePage alloc] initWithNibName:@"welcomePage" bundle:nil];
    self.window.rootViewController = self.viewController1;
}
else{

    NSLog(@"second");
    self.viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
    self.window.rootViewController = self.viewController;


}

[self.window makeKeyAndVisible];
if (![self connect])
{
    dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, 0.0 * NSEC_PER_SEC);
    dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
        //messageTableViewController
        self.viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
        self.window.rootViewController = self.viewController;
        //[navigationController presentModalViewController:settingsViewController animated:YES];
    });
}
return YES;
4

4 に答える 4

0

を使用している場合はUIStoryBoard、これで試してください

`instantiateViewControllerWithIdentifier` .: application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
        {    
         BOOL launch = [[NSUserDefaults standardUserDefaults] boolForKey:@"LaunchingFirstTime"];
                if(!launch){
                    NSLog(@"first");
                    [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"LaunchingFirstTime"];
                    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
        ViewController *viewController = [storyboard instantiateViewControllerWithIdentifier:@"ViewController_ID"];

                    self.window.rootViewController = self.viewController1;
                }
                else{

                    NSLog(@"second");
                    self.viewController = // Follow the above
                    self.window.rootViewController = self.viewController;    
                }

ストーリーボードを使用していない場合は、問題を簡単に説明してください` ,.

于 2013-10-03T06:02:14.863 に答える
0
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    BOOL launch = [[NSUserDefaults standardUserDefaults] boolForKey:@"LaunchingFirstTime"];
    if(!launch){
        NSLog(@"first");
        [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"LaunchingFirstTime"];
        [[NSUserDefaults standardUserDefaults] synchronize];
        self.viewController1 = [[welcomePage alloc] initWithNibName:@"welcomePage" bundle:nil];
        self.window.rootViewController = self.viewController1;
    } else {
        NSLog(@"second");
        self.viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
        self.window.rootViewController = self.viewController;    
    }
}
于 2013-10-03T06:05:33.020 に答える
0

ストーリー ボードを使用しておらず、ウィンドウが IBOutlet でない場合は、これを行います。

 didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

 //add this
 self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
 self.window.backgroundColor=[UIColor clearColor];

BOOL launch = [[NSUserDefaults standardUserDefaults] boolForKey:@"LaunchingFirstTime"];
if(!launch){
    NSLog(@"first");
    [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"LaunchingFirstTime"];
    self.viewController1 = [[welcomePage alloc] initWithNibName:@"welcomePage" bundle:nil];
    self.window.rootViewController = self.viewController1;
}
else{

    NSLog(@"second");
    self.viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
    self.window.rootViewController = self.viewController;


}
于 2013-10-03T05:57:08.517 に答える
0

メソッドを使用synchronizeして、ユーザーのデフォルトをディスクにすぐに書き込むようにします。

[[NSUserDefaults standardUserDefaults] synchronize];

Apple ドキュメントから:

synchronize method writes any modifications to the persistent domains to disk and updates all unmodified persistent domains to what is on disk.

コードに欠落しています。if箇条書きにします。

于 2013-10-03T06:10:00.303 に答える