其视图不在窗口层次结构中!问题

时间:2013-01-17 13:57:05

标签: iphone ios uistoryboard segue

我的项目最初是用UITabBarController作为第一个出现的视图创建的,然后我需要添加一个自定义的启动画面,显示3秒,所以我使用了一个新的UIViewController,它出现在UITabBarController之前,我设置了这个自定义的启动画面作为第一个出现的观点。但是,在我做了那个改变之后。目前我的启动画面转到UITabBarController即时收到此错误。

警告:尝试在SplashViewController上显示UITabBarController:0x1cdcfe30: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

顺便说一下,我使用故事板这是一个奇怪的错误,在我添加了启动画面之后一直出现在控制台中,我无法弄清楚如何摆脱它。

2 个答案:

答案 0 :(得分: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];
}

答案 1 :(得分:0)

无需为启动画面添加其他控制器。只需在第一个选项卡中的控制器视图顶部添加一个视图(您的启动画面视图)。该视图将在应用启动时显示,然后在您想要的任何延迟之后,淡出该视图并将其从超级视图中删除。