2011-01-08 92 views
1

我從一個viewcontroller切換到另一個有問題。如何從一個UIViewController切換到另一個?

以下是我有:

在我的 「AppDelegate_iPad.m」:

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

    CGRect frame = [UIScreen mainScreen].bounds; 
    window = [[UIWindow alloc] initWithFrame:frame]; 
    window.backgroundColor = [UIColor blackColor]; 

    LoginViewController_iPad *loginView = [[LoginViewController_iPad alloc] initWithNibName:@"LoginViewController_iPad" bundle:nil]; 
    [window addSubview:loginView.view]; 


    [self.window makeKeyAndVisible]; 

    return YES; 
} 

工程。現在我在該屏幕上有一個登錄按鈕,當按下它時,它就是這樣的:

- (IBAction)doPressLoginButton 
{ 
    DebugLog(@"doPressLoginButton"); 

    MenuViewController_iPad *menuView = [[MenuViewController_iPad alloc] initWithNibName:@"MenuViewController_iPad" bundle:nil]; 
    [self.navigationController pushViewController:menuView animated:YES]; 
    [menuView release]; 

} 

問題是什麼也沒發生。我假設我錯過了實際的導航調節器?!

希望,任何人都可以提供幫助。

謝謝

回答

1

你應該建立在你的應用程序委託一個UINavigationController實例變量。然後,確保將其合成並在dealloc方法中釋放它。

你實現application:didFinishLaunchingWithOptions:看起來是這樣的:

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

    // window is usually an IBOutlet 
    CGRect frame = [UIScreen mainScreen].bounds; 
    window = [[UIWindow alloc] initWithFrame:frame]; 
    window.backgroundColor = [UIColor blackColor]; 

    LoginViewController_iPad *loginView = [[LoginViewController_iPad alloc] initWithNibName:@"LoginViewController_iPad" bundle:nil]; 
    navigationController = [[UINavigationController alloc] initWithRootViewController:loginView]; 
    [loginView release]; 

    [self.window addSubview:navigationController.view]; 
    [self.window makeKeyAndVisible]; 

    return YES; 
}

現在,你就可以使用self.navigationController。

+0

關於您對有關窗口是IBOutlet的評論。那麼我知道,但我沒有MainWindow.xib,所以我自己創建窗口。 – eemceebee 2011-01-09 11:29:36

0

我認爲我缺少實際navigationconroller?!

你是對的。 :d

self.navigationController返回nil,如果你不建立一個NavigationController。
而且任何消息發送到nil對象將被忽略。

如果你只需要從一個切換到另一個。使用

[self presentModalViewController:modalViewController animated:YES]; 

代替。

+0

切換會好,但presentModalViewController會拋出一個錯誤:請求成員'presentModalViewController'的東西不是結構或聯合 – eemceebee 2011-01-08 17:35:44

相關問題