Переключатель Objective-C с помощью пролистывания
Я следовал коду, который переключает вкладки, когда пользователь проводит пальцем влево / вправо по экрану. Проблема в том, что когда я переключаюсь на другие вкладки, панель вкладок исчезает.
Я попытался нажать навигационный контроллер, но он выдает ошибку о том, что он не поддерживается.
Вот код:
- (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];
}
1 ответ
Решение
Вы делаете это неправильно. 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;
или же
[self.tabBarController setSelectedIndex:i];
**** Where i
это index
вашей ViewController
ты хочешь показать.