I followed a code that switches tabs when the user swipes left / right on the screen. The problem is that when I switch to the other tabs, the tab bar disappears.
I tried pushing a navigationController but it throws an error saying that it is not supported.
Here is the code:
- (void)viewDidLoad {
[super viewDidLoad];
UISwipeGestureRecognizer *swipeLeft = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeRight:)];
swipeLeft.direction = UISwipeGestureRecognizerDirectionLeft;
[self.view addGestureRecognizer:swipeLeft];
swipeLeft.delegate = self;
UISwipeGestureRecognizer *swipeRight = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeRight:)];
swipeRight.direction = UISwipeGestureRecognizerDirectionRight;
[self.view addGestureRecognizer:swipeRight];
swipeRight.delegate = self;
}
-(void) swipeRight:(UISwipeGestureRecognizer *) recognizer {
if (recognizer.direction == UISwipeGestureRecognizerDirectionRight){
//NSLog(@"swipe right");
NSString * storyboardName = @"Main";
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:storyboardName bundle: nil];
UIViewController * vc = [storyboard instantiateViewControllerWithIdentifier:@"RecentsController"];
[self presentViewController:vc animated:YES completion:nil];
}
}
-(void) swipeLeft:(UISwipeGestureRecognizer *) recognizer {
if (recognizer.direction == UISwipeGestureRecognizerDirectionRight)
NSLog(@"Swipe left");
NSString * storyboardName = @"Main";
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:storyboardName bundle: nil];
UIViewController * vc = [storyboard instantiateViewControllerWithIdentifier:@"SettingsController"];
[self presentModalViewController:vc animated:YES];
}
You are doing it in a wrong way. To switch you Tab Bar via code
you don't have to push a new ViewController
it will replace your existing one.
To do so you can use one of the following methods:
self.tabBarController.selectedIndex = i;
or
[self.tabBarController setSelectedIndex:i];
**** Where i
is the index
of your ViewController
you want to show.