1

私のプロジェクトは、最初に表示されるビューとして UITabBarController を使用して最初に作成されました。次に、3 秒間表示されるカスタム スプラッシュ スクリーンを追加する必要があったため、UITabBarController の前に表示される新しい UIViewController を使用し、このカスタム スプラッシュ スクリーンを最初に設定しました。表示するビュー。しかし、私はその変更を行った後。現時点では、スプラッシュ画面が UITabBarController im に移動し、このエラーが発生しています。

警告: UITabBarController: 0x1cdcfe30 on SplashViewController: 0x1cdc55e0 を表示しようとしていますが、そのビューはウィンドウ階層にありません!

この方法で SplashViewController でビューの変更を実行しています:

#import "SplashViewController.h"

@interface SplashViewController ()

@end

@implementation SplashViewController



- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    timer = [NSTimer scheduledTimerWithTimeInterval:3.0 target:self selector:@selector(changeView) userInfo:nil repeats:YES];

}

-(void)changeView{

    [self performSegueWithIdentifier:@"splash" sender:self];
}
- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

ところで、私はストーリーボードを使用しています。これは、そのスプラッシュ スクリーンを追加した後、常にコンソールに表示される奇妙なエラーであり、それを取り除く方法がわかりません。

4

2 に答える 2

1

Identity Inspector(Storyboard) で TabBarController に Storyboard id "TabBarViewController" を指定します。

そしてchangeViewを次のように実装します-

-(void)changeView
{
    UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
    TabBarViewController *tabBarViewController = [storyBoard instantiateViewControllerWithIdentifier:@"TabBarViewController"];
    [[[[UIApplication sharedApplication] delegate] window] setRootViewController:tabBarViewController];
}
于 2013-01-17T14:19:23.853 に答える
0

スプラッシュ スクリーン用に別のコントローラーを追加する必要はありません。最初のタブのコントローラーのビューの上にビュー (スプラッシュ スクリーン ビュー) を追加するだけです。そのビューはアプリの起動時に表示され、必要な遅延の後、そのビューをフェードアウトしてスーパービューから削除します。

于 2013-01-17T17:16:40.910 に答える