Переключатель 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 ты хочешь показать.

Другие вопросы по тегам