Imran
Imran

Reputation: 1715

How to stop UINavigationBar default back button animation using storyboard?

I am using storyboard in my app where I have to navigate to another view controller without animation.I am successfully doing it using the custom segue.But I when I come back to the previous view controller then by using navigation bar default back button then it is animating while coming backward.So going forward it is not animating and going backward it is animating.I want to stop the default animation of the back button.

Custom Seague

// PushNoAnimationSegue.h

@interface PushNoAnimationSegue : UIStoryboardSegue

@end

// PushNoAnimationSegue.m

@implementation PushNoAnimationSegue

-(void) perform{
    [[[self sourceViewController] navigationController] pushViewController:[self   destinationViewController] animated:NO];
}

@end

Using this code I am successfully going to the next view controller without animation since -(void) perform is called automatically in the forward direction.When I come back it is not called.So please suggest me if there is anything wrong with the implementation or I should go with some other method.

Upvotes: 2

Views: 530

Answers (2)

Anurag Bhakuni
Anurag Bhakuni

Reputation: 2439

hope this will help

1.custom button on navigation bar

UIButton *btn = [[UIButton alloc] initWithFrame:CGRectMake(x,y,width,height)];
[btn setImage:[UIImage imageNamed:@"some_image.png"] forState:UIControlStateNormal];

[btn addTarget:self action:@selector(popViewController) forControlEvents:UIControlEventTouchUpInside];

UIBarButtonItem *backButtonItem = [[UIBarButtonItem alloc] initWithCustomView:btn];
self.navigationItem.leftBarButtonItem =backButtonItem;

and then

void popViewController()
{
[self.navigationController popViewControllerAnimated:NO];
}

Upvotes: 1

BHASKAR
BHASKAR

Reputation: 1201

If you use NavigationController then use this

[self.navigationController popViewControllerAnimated:NO];

Or

[self dismissViewControllerAnimated:NO completion:nil];

Upvotes: 0

Related Questions