2011-07-30 56 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導航控制器不會被加載,直到然後

相關問題