0

の詳細ビューで、その子ビューUISplitViewにサブビューを追加したいと思います。UINavigationController

NSTimer *delayTimerアニメーションを使用して詳細ビューをフェードインするため、を使用して子ビューの読み込みを遅らせます。

delayTimer = [NSTimer scheduledTimerWithTimeInterval:1.3 target:self 
selector:@selector(loadWelcomeView) userInfo:nil repeats:NO];

追加したいビューはwelcomeviewと呼ばれます

- (void) loadWelcomeView 
{
    NSLog(@"Welcome View Loaded.");
    welcomeViewController = [[WelcomeView alloc] 
                         initWithNibName:@"WelcomeView" bundle:nil];
    [self.navigationController addChildViewController:welcomeViewController];
}

しかし、私がプログラムを実行して待ったとき、それは完全に空白でした!!!

ただし、メッセージWelcome view loaded.はデバッグウィンドウに表示されました。

を使用する[self loadWelcomeView];代わりにを使用するNSTimerと、ウェルカムビューが完全に表示されます。

どのような手順を間違えましたか...?

4

1 に答える 1

0

UIはメインスレッドで発生する必要があるため、NSTimersで発生する可能性のあるスレッドの問題を除外しましょう。これを試してみてください:

- (void) loadWelcomeViewWithinMainThread
{
    NSLog(@"Welcome View Loaded.");
    welcomeViewController = [[WelcomeView alloc] initWithNibName:@"WelcomeView" bundle:nil];
    if(welcomeViewController)
    {
        if(self.navigationController)
        {
            [self.navigationController addChildViewController:welcomeViewController];
        } else {
            NSLog( @"navigationController is null");
        }
    } else {
        NSLog(@"welcomeViewController is null");
    }
}

- (void) loadWelcomeViewWithinMainThread {
    [self performSelectorOnMainThread: @selector(loadWelcomeViewWithinMainThread) withObject: nil waitUntilDone: YES];
}
于 2011-12-16T19:00:30.677 に答える