Present View Controller not working with ios 9

北城以北 提交于 2019-12-06 05:22:19

问题


Present view controller is not working with ios 9, when I press the button it not redirected to present view controller.

Why this happens ?

I had tried the below code

 RegistrationViewController * viewController =[[UIStoryboard storyboardWithName:@"Registration" bundle:nil] instantiateViewControllerWithIdentifier:@"RegistrationViewController"];
 [self presentViewController:viewController animated:YES completion:nil];

I had also tried the below code

 UIStoryboard* storyboard = [UIStoryboard storyboardWithName:@"Registration"
                                                         bundle:nil];
 RegistrationViewController *add =
 [storyboard instantiateViewControllerWithIdentifier:@"RegistrationViewController"];
 [self presentViewController:add animated:YES completion:^{
        dispatch_async(dispatch_get_main_queue(), ^{
            [self presentViewController:add
                               animated:YES
                             completion:nil];
        });
  }];

Edit

My complete code here. I am using Xcode 7 and running it with ios 9

#import "LoginViewController.h"
#import "RegistrationViewController.h"

@interface LoginViewController ()

@end

@implementation LoginViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}


- (IBAction)actionRegistrationClicked:(id)sender
{
    RegistrationViewController * viewController =[[UIStoryboard storyboardWithName:@"Registration" bundle:nil] instantiateViewControllerWithIdentifier:@"RegistrationViewController"];
     [self presentViewController:viewController animated:YES completion:nil];

}
@end

Registration view controller

#import "RegistrationViewController.h"

@interface RegistrationViewController ()

@end

@implementation RegistrationViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

回答1:


Make sure the presentedViewController is nil. If presentedViewController is not nil change the code to following.

RegistrationViewController * viewController =[[UIStoryboard storyboardWithName:@"Registration" bundle:nil] instantiateViewControllerWithIdentifier:@"RegistrationViewController"];

if ([self presentedViewController]) {
    [[self presentedViewController] dismissViewControllerAnimated:NO completion:^{
        dispatch_async(dispatch_get_main_queue(), ^{
            [self presentViewController:viewController animated:YES completion:nil];
        });
    }];
} else {
    [self presentViewController:viewController animated:YES completion:nil];

}



回答2:


Sometimes a bug occurs with main loop, try to present that way

RegistrationViewController *viewController = [[UIStoryboard storyboardWithName:@"Registration" bundle:nil] instantiateViewControllerWithIdentifier:@"RegistrationViewController"];

dispatch_async(dispatch_get_main_queue(), ^{
   [self presentViewController:viewController animated:YES completion:nil];
});



回答3:


try viewDidAppear in

  -(void)viewDidAppear:(BOOL)animated{ 
         [self presentViewController:viewController animated:YES completion:nil];
    }



回答4:


Try the below code:

RegistrationViewController * viewController = [[self.storyboard instantiateViewControllerWithIdentifier:@"RegistrationViewController"];

[self presentViewController:viewController animated:YES completion:nil];


来源:https://stackoverflow.com/questions/33758859/present-view-controller-not-working-with-ios-9

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!