2011-07-30 14 views
1

I私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方法で積み重ねが、何らかの理由でビューが取得されていないナビゲーションに別のViewControllerをロードしようとしますプッシュ:起こっていただきました

-(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

lvcLoginViewControllerに割り当てる必要があります。

- (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

2つのことが間違っている可能性があります。 まず、ナビゲーションコントローラをapplicationDidFinishLaunchingに割り当てます。どちらが最初になるかはわかりませんが、applicationDidFinishLaunchingまたはviewDidLoadです。

これまで見てきたように、まずルートビューコントローラを設定してから、ナビゲーションコントローラを割り当て、次にルートビューコントローラを設定した直後にviewDidLoadを起動し、ナビゲーションコントローラを割り当てます。その時点でナビゲーションコントローラがまだ生まれていないので、viewDidLoadの単語は機能しない可能性があります。

しかし、私は前の説明がうまく動作していません。それは単なる可能性です。別の奇妙なことがあります

は、あなたは隠されたあなたのナビゲーションコントローラのナビゲーションバーを設定

navigationController.navigationBarHidden = YES; 

そして、ユーザーがバックルートビューコントローラにポップすることができないようですので、ナビゲーションコントローラにはありませんログインビューコントローラを押します。 一方、モーダルビューコントローラは、ナビゲーションバーが隠されているか、ナビゲーションバーが割り当てられていない状態で閉じることができるため、モーダルビューコントローラとして表示すると機能します。

しかし、私はXcodeでいくつかの問題が発生しているので、まだそれについてはまだ分かりません。したがって、私は前の2つのアイデアをテストすることはできません。申し訳ありません。しかし、私はまだnavigationBarHiddenNOに設定することをお勧めします。

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

- (void)viewDidAppear:(BOOL)animated 

方法にあなたの

[self.navigationController pushViewController:loginViewController]; 

を入れてください。 viewControllers navigationControllerは、それまでにロードされません

関連する問題