2012-04-02 9 views
1

私はpushViewControllerを使いたいですが、できません。私はxcode3でこのコードを使用できることを覚えています。ここでUIButtonでpushViewControllerを使用できないのはなぜですか?

はIBActionボタン

-(IBAction)changtoCal:(id)sender 
{ 
    NSLog(@"get in"); 
    UINavigationController *cal_nav = [[UINavigationController alloc] initWithNibName:@"calculator" bundle:nil]; 
    [self.navigationController pushViewController:cal_nav animated:YES]; 
} 

それは押さないでコードです。なぜ ???あなたは私に教えてどうすればいいですか?

そして、ここでは、私はUIViewControllerが正しくUINavigationControllerに埋め込まれていないことを推測するの.h

@class ViewController; 

@interface AppDelegate : UIResponder <UIApplicationDelegate> 
{ 
    UINavigationController *navigationController; 
} 

@property (strong, nonatomic) UIWindow *window; 

@property (strong, nonatomic) ViewController *viewController; 

@property (strong, nonatomic) IBOutlet UINavigationController *navigationController; 

@end 

.M

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
    self.viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil]; 
    self.window.rootViewController = self.viewController; 
    [_window addSubview:[navigationController view]]; 
    [self.window makeKeyAndVisible]; 
    return YES; 
} 

答えて

1

私AppDelegate です。それはself.navigationController = nilを意味します。

私はXIBを知りませんが、次の操作を行って、それを修正することができます:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
    self.viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil]; 
    UINavigationController *navc = [[UINavigationController alloc] initWithRootViewController:self.viewController]; 
    self.window.rootViewController = navc; 
    [_window addSubview:navc.view]; 
    [self.window makeKeyAndVisible]; 
    return YES; 
} 
+0

SRY 、それはクラッシュし、表示されます。 ***キャッチされていない例外 'NSInvalidArgumentException'のためアプリを終了しています、理由: 'ナビゲーションコントローラを押してもサポートされていません' – crazyoxygen

+0

入手しました。私がベリリウムとFelixLamを組み合わせると、私はそれを押し進めることができます。 2つありがとう:))) – crazyoxygen

2

あなたはIBActionでカスタムのUIViewControllerのインスタンスを作成する必要はなく、新しいUINavigationController

// change UICalculatorViewController to your view controller 
UICalculatorViewController *cal_nav = [[UICalculatorViewController alloc] initWithNibName:@"calculator" bundle:nil]; 
[self.navigationController pushViewController:cal_nav animated:YES]; 
+0

それを得ました。私がベリリウムとFelixLamを組み合わせると、私はそれを押し進めることができます。ありがとうございます:))) – crazyoxygen

関連する問題