В XCode 5 и iOS 7 не работает контроллер push-представления в ViewDidLoad

Привет, я пытаюсь подтолкнуть контроллер представления в viewDidLoad

Я использую раскадровку. В ViewDidLoad я проверяю, что пользователь является логином, и он создал свой профиль. если пользователь не вошел в систему или он не создал свой профиль, то нажмите другой контроллер представления для входа в систему / просмотра профиля. Следующий код не работает.

- (void)viewDidLoad

if(USER_IS_LOGGED_IN)
{
    if(USER_PROFILE_COMPLETED)
    {
       [self sendRequest];
    }
    else
    {
        //push profile view      
        UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
        ProfileViewController *profileViewController = (ProfileViewController *)[storyboard instantiateViewControllerWithIdentifier:@"ProfileView"];
        profileViewController.isFromDealView = YES;
        profileViewController.hidesBottomBarWhenPushed = YES;
        [self.navigationController pushViewController:profileViewController animated:YES];
    }

    }
    else
    {

    //push login view
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
    LoginViewController *loginViewController = (LoginViewController *)[storyboard instantiateViewControllerWithIdentifier:@"LoginView"];
    loginViewController.isFromDealView = YES;
    loginViewController.hidesBottomBarWhenPushed = YES;
    [self.navigationController pushViewController:loginViewController animated:YES];


    }

}

2 ответа

Решение

Почему бы вам не создать переход от вашего viewController к контроллеру входа и просмотра профиля и использовать executeSegueUsingIdentifier: и нажать контроллер навигации с помощью prepareForSegue: метод

 - (void)viewDidLoad 
   {
    if(USER_IS_LOGGED_IN)
    {
        if(USER_PROFILE_COMPLETED)
        {
           [self sendRequest];
        }
        else
        {
            //push profile view      

            [self performSegueWithIdentifier:@"profileSegue" sender:self] ;
        }
        }
        else
        {
           //push login view
            [self performSegueWithIdentifier:@"loginSegue" sender:self] ;
        }
    }

в подготовке к методу

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {


    if ([segue.identifier isEqualToString:@"profileSegue"]) {
      ProfileViewController *profileViewController = segue.destinationViewController;
      profileViewController.isFromDealView = YES;
      profileViewController.hidesBottomBarWhenPushed = YES;
}
else if([segue.identifier isEqualToString:@"loginSegue"]){

    LoginViewController *loginViewController = segue.destinationViewController;
    loginViewController.isFromDealView = YES;
    loginViewController.hidesBottomBarWhenPushed = YES;
}
else{
//no segue to push
}
}

Я немного запутался с вашим кодом, но в любом случае попробуйте это

 - (void)viewDidLoad {

 if(USER_IS_LOGGED_IN) {
    if(USER_PROFILE_COMPLETED)
    {
       [self sendRequest];
    }
    else
    {
        //push profile view      
        UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
        ProfileViewController *profileViewController = (ProfileViewController *)[storyboard instantiateViewControllerWithIdentifier:@"ProfileView"];
        profileViewController.isFromDealView = YES;
        profileViewController.hidesBottomBarWhenPushed = YES;
        [self.navigationController pushViewController:profileViewController animated:YES];
    }
 } else {

    //push login view
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
    LoginViewController *loginViewController = (LoginViewController *)[storyboard instantiateViewControllerWithIdentifier:@"LoginView"];
    loginViewController.isFromDealView = YES;
    loginViewController.hidesBottomBarWhenPushed = YES;
    [self.navigationController pushViewController:loginViewController animated:YES];


    }`
 }
Другие вопросы по тегам