2012-12-11 50 views
1

我试图在UITabBarController之前显示一个UIViewController 2秒,我知道我必须从我的appdelegate中创建它。我试图通过首先将我的self.window.rootviewcontroller分配给我的UIViewController并在2秒后使用计时器将我的self.window.rootviewcontroller重新分配给我的UITabViewController。从UIViewController切换到UITabBarController

问题是,当我测试它时,我的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; 

} 
+0

你是如何添加新的视图控制器?首先尝试将它作为子视图添加到“window”中,然后_then_将“rootViewController”设置为新的视图控制器。但是,如果您只显示了'UIViewController' 2秒,只需将其添加到'UITabBarController'的视图并在两秒后将其删除。 – sooper

+0

我更新了这个问题,那就是我的代码。我将它添加到我的MainViewController.xib中,我在其中放置了一个视图控制器和一个视图。 –

回答

0

您的应用程序崩溃,因为你选择了后一个冒号(:) changeView然而,该方法才不是。只要删除该冒号即可。此外,没有必要有一个ivar的计时器,甚至分配计时器创建任何东西 - 该行可以只是︰

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

我现在就试试 –

+0

是的,这有所作为...我自我教我,所以我让这个noob错误:)谢谢你的时间 –

相关问题