AndrewSB
AndrewSB

Reputation: 951

Can't pop iOS viewController. Not sure, but I think it's something with the Navigation Controller

I'm having trouble trying to pop a view

App Delegate

@implementation MAAppDelegate
@synthesize navController;
@synthesize detailViewController;

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

    // Init the navController for the Master Detail View of the grade cells

    UINavigationController *navController = [[UINavigationController alloc] init];


    detailViewController = [[UIViewController alloc] init]; //step6
    navController = [[UINavigationController alloc] initWithRootViewController:[[MAController alloc] init]]; //step7


    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    self.window.backgroundColor = [UIColor whiteColor];
    self.window.rootViewController = navController; //step8
    [self.window makeKeyAndVisible];


    // Set MAController as rootViewController
    //self.window.rootViewController = [[MAController alloc] init];
    self.window.backgroundColor = [UIColor whiteColor];
    [self.window makeKeyAndVisible];




    // Use the insanely cool TSMessages to show network alerts
    [TSMessage setDefaultViewController: self.window.rootViewController];
    return YES;
}

First part of viewController

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


    [self.navigationController setNavigationBarHidden:YES];
    UIBarButtonItem *newBackButton = [[UIBarButtonItem alloc] initWithTitle:@"Home" style:UIBarButtonItemStyleBordered target:self action:@selector(home:)];
    self.navigationItem.leftBarButtonItem=newBackButton;

Later, when I change the viewController

    NSLog(@"Opened progress report");

    UIViewController *detailViewControl = [[UIViewController alloc] init];

    // Set progress report as the view controller
    [self.navigationController pushViewController:detailViewControl animated:YES];

    UIImage *background = [UIImage imageNamed:@"bg"];

    // Add static image bg
    self.backgroundImageView = [[UIImageView alloc] initWithImage:background];
    self.backgroundImageView.contentMode = UIViewContentModeScaleAspectFill;
    [self.view addSubview:self.backgroundImageView];

    // Add blurred layer to image when tableView goes in front of it
    self.blurredImageView = [[UIImageView alloc] init];
    self.blurredImageView.contentMode = UIViewContentModeScaleAspectFill;
    self.blurredImageView.alpha = 0;
    [self.blurredImageView setImageToBlur:background blurRadius:10 completionBlock:nil];
    [self.view addSubview:self.blurredImageView];



    [self.navigationController setNavigationBarHidden:NO];

So I don't understand why that when I do this, a selector from the button (that I know fires, because I get Righthtere in my log):

    -(void)home:(UIBarButtonItem *)sender {
    NSLog(@"Righthtere");
    // Set progress report as the view controller
    [self.navigationController popToViewController:self animated:YES];

    }

It doesn't go back to the initial view controller.

Upvotes: 0

Views: 1225

Answers (2)

Arul
Arul

Reputation: 11

I use the below code to pop the previous viewcontroller in iOS 8.

[self presentModalViewController:viewcontroller animated:YES];

Upvotes: -2

Mark S.
Mark S.

Reputation: 4019

You seem to be confusing popToViewController and popViewControllerAnimated. popViewControllerAnimated removes the current view from the stack and brings the new stack top the active view controller. popToViewController pops the stack until the listed view controller is on top of the stack.

Since you are calling popToViewController with self, it will look and see that the requested view controller is already on top of the stack and do nothing. If you wish to go back one view controller then your call should be.

[self.navigationController popViewControllerAnimated:YES];

Upvotes: 3

Related Questions