【问题标题】:In XCode 5 and iOS 7 push view controller in ViewDidLoad does not working在 XCode 5 和 iOS 7 中,ViewDidLoad 中的推送视图控制器不起作用
【发布时间】:2013-11-09 20:05:42
【问题描述】:

您好,我正在尝试在 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];


    }

}

【问题讨论】:

  • 放置断点并检查。推送操作是否编译
  • 为什么不起作用?任何错误,你检查你的navigationController 和views 不是nil 吗?
  • @AshwinDamji:检查 appDelegate 是否将 rootViewController 设置为 NavigationController

标签: ios iphone ios7 xcode5 xcode5.0.1


【解决方案1】:

为什么不创建从 viewController 到 Login 和 Profile View Controller 的 segue 并使用 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
}
}

【讨论】:

    【解决方案2】:

    我对你的代码有点困惑,但无论如何尝试一下

     - (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];
    
    
        }`
     }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-19
      • 1970-01-01
      • 1970-01-01
      • 2012-08-05
      • 2014-07-07
      • 2011-10-05
      • 1970-01-01
      相关资源
      最近更新 更多