2011-07-30 55 views
1

我在AppDelegate下面的代码:的UINavigationController pushViewController在viewDidLoad中不工作

#import <UIKit/UIKit.h> 

@class PersonalDiarySystemViewController; 

@interface PersonalDiarySystemAppDelegate : NSObject <UIApplicationDelegate> { 
    UIWindow *window; 
    PersonalDiarySystemViewController *viewController; 
    UINavigationController *navigationController; 

} 

@property (nonatomic, retain) IBOutlet UIWindow *window; 
@property (nonatomic, retain) IBOutlet PersonalDiarySystemViewController *viewController; 
@property (nonatomic, retain) UINavigationController *navigationController; 

@end 

#import "PersonalDiarySystemAppDelegate.h" 
#import "PersonalDiarySystemViewController.h" 

@implementation PersonalDiarySystemAppDelegate 

@synthesize window; 
@synthesize viewController; 
@synthesize navigationController; 

#pragma mark - 
#pragma mark Application lifecycle 

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {  

    // Override point for customization after application launch. 

    // Set the view controller as the window's root view controller and display. 
    self.window.rootViewController = self.viewController; 
    navigationController = [[UINavigationController alloc] initWithRootViewController:self.window.rootViewController]; 
    navigationController.navigationBar.tintColor = [UIColor 
                 colorWithRed:217.0/255 
                 green:33.0/255 
                 blue:0 
                 alpha:1]; 
    navigationController.navigationBarHidden = YES; 
    [self.window addSubview:navigationController.view]; 
    [self.window makeKeyAndVisible]; 

    return YES; 
} 

我RootViewController的尝试另一个视图 - 控制加载到导航控制器在其viewDidLoad方法栈但由于某种原因认为是没有得到推:

-(void) viewDidLoad{  
    lvc = [[LoginViewController alloc] init]; 
    //lvc.modalTransitionStyle = UIModalTransitionStyleCrossDissolve; 
    [lvc setDelegate:self]; 
    //[self presentModalViewController:lvc animated:YES]; 
    [self.navigationController pushViewController:lvc animated:YES];  
} 

我越来越没有错误,所以不知道怎么回事......使用presentModalViewController作品...所以真的很困惑!

回答

2

您需要将lvc指定为LoginViewController

- (void) viewDidAppear 
{  
    [self performSelector:@selector(loginCheck:) withObject:nil afterDelay:0.5]; 
}  
- (void) loginCheck:(id)sender 
{ 
    LoginViewController * lvc = [[LoginViewController alloc] init]; 
    //lvc.modalTransitionStyle = UIModalTransitionStyleCrossDissolve; 
    [lvc setDelegate:self]; 
    //[self presentModalViewController:lvc animated:YES]; 
    [self.navigationController pushViewController:lvc animated:YES]; 
} 
+0

这也行不通... – user559142

+0

你导入'LoginViewController'?因为这是你如何推新视图。 – WrightsCS

+0

是的,我是...它不会编译,如果我不是... – user559142

0

有两件事情可能会出错。 首先,你在applicationDidFinishLaunching分配导航控制器,我不太确定哪个先走,applicationDidFinishLaunchingviewDidLoad

正如你所见,你首先设置你的根视图控制器,然后分配导航控制器,然后可能viewDidLoad立即启动你设置根视图控制器,然后导航控制器被分配。所以viewDidLoad中的文字可能不起作用,因为那时导航控制器还没有诞生。

但我不'以前的解释工作的东西。这只是一种可能性。

还有一个奇怪的东西,你设置隐藏您的导航器的导航栏

navigationController.navigationBarHidden = YES; 

然后好像用户无法弹出,回到根视图控制器,所以导航控制器不推入登录视图控制器。 同时,模态视图控制器可以隐藏导航栏或未分配导航栏,所以当您将其作为模态视图控制器呈现时,它可以工作。

但我仍然不太确定,因为我现在有一些问题与Xcode,所以我不能测试前两个想法,对此感到抱歉。但我仍建议您将navigationBarHidden设置为NO

0
- (void)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {  

    // Override point for customization after application launch. 

    UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:viewController]; 
    self.navController = navigationController; 
    [mainViewController release]; 
    [navigationController release]; 

    // Configure and display the window. 
    [window addSubview:navController.view]; 
    [window makeKeyAndVisible]; 
} 

- (void)viewDidLoad{  
    lvc = [[LoginViewController alloc] init]; 
    [self.navigationController pushViewController:lvc animated:YES];  
} 
1

把你

[self.navigationController pushViewController:loginViewController]; 

进入

- (void)viewDidAppear:(BOOL)animated 

方法。该viewControllers导航控制器不会被加载,直到然后

相关问题