我的项目最初是用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
顺便说一下,我使用故事板这是一个奇怪的错误,在我添加了启动画面之后一直出现在控制台中,我无法弄清楚如何摆脱它。
答案 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)
无需为启动画面添加其他控制器。只需在第一个选项卡中的控制器视图顶部添加一个视图(您的启动画面视图)。该视图将在应用启动时显示,然后在您想要的任何延迟之后,淡出该视图并将其从超级视图中删除。