TabBarController, перезаписать следует выбрать ViewController, чтобы сделать переход - PullRequest
0 голосов
/ 06 марта 2012

Привет. Я пытаюсь изменить поток tabcontroller, поэтому, когда пользователь не вошел в систему, просто переведите его в окно входа в систему вместо настроек. Мой контроллер расширяет TabBarController, и я устанавливаю делегата как

self.tabBarController.delegate=self;

Мой код:

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController {

    if (login) {

        LoginViewController *loginViewController = [[LoginViewController alloc] init];
        UINavigationController *navController = [[UINavigationController alloc]
                                                 initWithRootViewController:loginViewController];


        [tabBarController presentViewController:loginViewController animated:YES completion:nil];
               return NO;
    } else {
        return YES;
    }

Мне никогда не удается выполнить навигацию, это дает исключение:

ion 'NSInvalidArgumentException', reason: 'Application tried to present modally an active controller <UITabBarController: 0x6a72220>.

Я также пытался показать логин как модальный, но он показывает только черный экран:

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController {

    if (YES) {
        LoginViewController *loginViewController = [[LoginViewController alloc] init];
        UINavigationController *navController = [[UINavigationController alloc]
                                                 initWithRootViewController:loginViewController];


        [tabBarController presentModalViewController:navController animated:YES];
               return NO;
    } else {
        return YES;
    }
}

Кто-нибудь может мне помочь !!!! пожалуйста !!!! * * 1013

1 Ответ

2 голосов
/ 08 марта 2012

Ну, мне удается исправить черный модальный экран (все еще не могу сказать, что это не модально).Проблема заключалась в том, что, поскольку я использую раскадровку, мне нужно загрузить представление из раскадровки следующим образом.

    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
    UIViewController *navController = [storyboard instantiateViewControllerWithIdentifier:@"login"];

    [navController setModalPresentationStyle:UIModalPresentationFullScreen];

    [self presentModalViewController:navController animated:YES];

Это и помогло :)

...