从UIViewController切换到UITabBarController

我试图显示一个UIViewController 2秒之前的UITabBarController,我知道我必须从我的appdelegate。 我试图通过首先将我的self.window.rootviewcontroller分配给我的UIViewController和2秒后重新分配我的self.window.rootviewcontroller到我的UITabViewController计划的计时器。

问题是,当我testing它,我的viewcontroller出现,但在2秒后,应用程序崩溃。

这是我的LaMetro_88AppDelegate.h

@interface LaMetro_88AppDelegate : NSObject <UIApplicationDelegate, UITabBarControllerDelegate> { UIView *startupView; NSTimer *timer; UIViewController *LoadingViewController; UITabBarController *tabBarController; } -(void)changeView; @property (nonatomic, retain) IBOutlet UIWindow *window; @property (nonatomic, retain) IBOutlet UITabBarController *tabBarController; @property (nonatomic, retain) IBOutlet UIViewController *LoadingViewController; @end 

这是我的LaMetro_88AppDelegate.m

 @implementation LaMetro_88AppDelegate @synthesize window = _window; @synthesize tabBarController = _tabBarController; @synthesize LoadingViewController = _LoadingViewController; - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window.rootViewController = self.LoadingViewController; timer = [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(changeView:) userInfo:nil repeats:NO]; [self.window makeKeyAndVisible]; return YES; } -(void)changeView { self.window.rootViewController = self.tabBarController; } 

你的应用程序崩溃,因为你的select器后面有一个冒号(changeView :)而方法不是。 只要删除该冒号。 而且,不需要为计时器设置一个ivar,甚至不需要将计时器创build分配给任何东西 – 该行可以是:

 [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(changeView) userInfo:nil repeats:NO];