1

こんにちは、viewDidLoadでView Controllerをプッシュしようとしています

ストーリーボードを使用しています。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];


    }

}
4

2 に答える 2

0

viewController から Login and Profile View Controller へのセグエを作成し、 performSegueUsingIdentifier: を使用して、 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] ;
        }
    }

prepareforsegue メソッドで

-(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
}
}
于 2013-10-30T10:46:20.773 に答える