Как переключиться с одного UIViewController на другой? - PullRequest
1 голос
/ 08 января 2011

У меня проблема с переключением с одного контроллера представления на другой.

Вот что у меня есть:

В моем "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];

}

Проблема в том, что ничего не происходит.Я предполагаю, что мне не хватает фактического контроллера навигации?!

Надеюсь, что кто-нибудь может помочь.

Спасибо

Ответы [ 2 ]

1 голос
/ 09 января 2011

Вы должны создать переменную экземпляра 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 голосов
/ 08 января 2011

Я предполагаю, что мне не хватает фактического контроллера навигации ?!

ты прав. : D

self.navigationController возвращает ноль, если вы не настроили NavigationController.
И любые сообщения, отправленные объекту nil, будут игнорироваться.

Если вам нужно только переключиться с одного на другой. используя

[self presentModalViewController:modalViewController animated:YES]; 

вместо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...