Перемикання контролерів зору за допомогою рухів пальцем

Гаразд так ось проблема, з якою я втікаю:

Я намагаюся перейти з одного viewController , який я назвав MenuViewController , який містить моє меню (очевидно). У мене є окремий viewController з назвою ViewController , що містить мій mapView . Я хотів би, щоб мої MenuViewController перейшли до мого mapView проведіть пальцем по ліву з мого MenuViewController .

Я точно не знаю, з чого почати.

Крім того, я використовую файли xib, а не розкадрування. Запуск iOS 6.

8

10 Відповіді

UISwipeGestureRecognizer *swipeLeftGesture=[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeGesture:)];
[self.view addGestureRecognizer:swipeLeftGesture];
swipeLeftGesture.direction=UISwipeGestureRecognizerDirectionLeft;

-(void)handleSwipeGesture:(UIGestureRecognizer *) sender
{
    NSUInteger touches = sender.numberOfTouches;
    if (touches == 2)
    {
        if (sender.state == UIGestureRecognizerStateEnded)
        { 
            //Add view controller here    
        }
    }  
}
13
додано
чому понизити?
додано Автор Girish, джерело
покладіть код руху штрих-коду (перші 3 рядки в моїх ансамблях) у viewDidLoad. Нічого в .h файлі. Виділіть свій контролер перегляду і просто натискайте, додайте або подайте його в методі handleSwipeGesture.
додано Автор Girish, джерело
Де ви виділяєте навігаційний контролер? Просто поясніть, як ви додаєте контролери перегляду.
додано Автор Girish, джерело
І це буде правильно враховувати мою точку зоруDidLoad? Що відбувається у моєму заголовку? Також, як саме я "додам контролер вигляду"?
додано Автор Julio Savala Lopez, джерело
Ось як я додав свій viewController до цього рядка, і це не працює: ViewController * mapView = [[ViewController alloc] initWithNibName: @ пакет "ViewController": [NSBundle mainBundle]]; [self.navigationController pushViewController: mapView анімований: ТАК];
додано Автор Julio Savala Lopez, джерело
UISwipeGestureRecognizer *swipeLeftGesture=[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeGesture:)];
[self.view addGestureRecognizer:swipeLeftGesture];
swipeLeftGesture.direction=UISwipeGestureRecognizerDirectionLeft;

-(void)handleSwipeGesture:(UIGestureRecognizer *) sender
{
    NSUInteger touches = sender.numberOfTouches;
    if (touches == 2)
    {
        if (sender.state == UIGestureRecognizerStateEnded)
        { 
            //Add view controller here    
        }
    }  
}
13
додано
чому понизити?
додано Автор Girish, джерело
покладіть код руху штрих-коду (перші 3 рядки в моїх ансамблях) у viewDidLoad. Нічого в .h файлі. Виділіть свій контролер перегляду і просто натискайте, додайте або подайте його в методі handleSwipeGesture.
додано Автор Girish, джерело
Де ви виділяєте навігаційний контролер? Просто поясніть, як ви додаєте контролери перегляду.
додано Автор Girish, джерело
І це буде правильно враховувати мою точку зоруDidLoad? Що відбувається у моєму заголовку? Також, як саме я "додам контролер вигляду"?
додано Автор Julio Savala Lopez, джерело
Ось як я додав свій viewController до цього рядка, і це не працює: ViewController * mapView = [[ViewController alloc] initWithNibName: @ пакет "ViewController": [NSBundle mainBundle]]; [self.navigationController pushViewController: mapView анімований: ТАК];
додано Автор Julio Savala Lopez, джерело

одного разу пройдемо через це

UISwipeGestureRecognizer  *swipeLeft = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleleftSwipe:)];
swipeLeft.numberOfTouchesRequired = 1;//give required num of touches here ..
swipeLeft.direction = UISwipeGestureRecognizerDirectionLeft;
swipeLeft.delegate = (id)self;
[self. view addGestureRecognizer:swipeLeft];

UISwipeGestureRecognizer  *swipeRight = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handlerightSwipe:)];
swipeRight.numberOfTouchesRequired = 1;//give required num of touches here ..
swipeRight.delegate = (id)self;
swipeRight.direction = UISwipeGestureRecognizerDirectionRight;
[self.view addGestureRecognizer:swipeRight];

Тепер визначте методи штрихування, як показано нижче:

 -(void)handleleftSwipe:(UISwipeGestureRecognizer *)recognizer{
//Do ur code for Push/pop..
  }
-(void)handlerightSwipe:(UISwipeGestureRecognizer *)recognizer{
 //Do ur code for Push/pop..
  }

Сподіваюся, це допоможе вам ...

4
додано

одного разу пройдемо через це

UISwipeGestureRecognizer  *swipeLeft = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleleftSwipe:)];
swipeLeft.numberOfTouchesRequired = 1;//give required num of touches here ..
swipeLeft.direction = UISwipeGestureRecognizerDirectionLeft;
swipeLeft.delegate = (id)self;
[self. view addGestureRecognizer:swipeLeft];

UISwipeGestureRecognizer  *swipeRight = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handlerightSwipe:)];
swipeRight.numberOfTouchesRequired = 1;//give required num of touches here ..
swipeRight.delegate = (id)self;
swipeRight.direction = UISwipeGestureRecognizerDirectionRight;
[self.view addGestureRecognizer:swipeRight];

Тепер визначте методи штрихування, як показано нижче:

 -(void)handleleftSwipe:(UISwipeGestureRecognizer *)recognizer{
//Do ur code for Push/pop..
  }
-(void)handlerightSwipe:(UISwipeGestureRecognizer *)recognizer{
 //Do ur code for Push/pop..
  }

Сподіваюся, це допоможе вам ...

4
додано

Це те, що я кодував для вас.

//add gesture recogniser to your view
[self addSwipegestureToView:self.view];


- (void) addSwipegestureToView : (UIView *) view{
    UISwipeGestureRecognizer *_swipegestureRecogniser = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeGesturePerformed)];
    _swipegestureRecogniser.numberOfTouchesRequired = 2;
    [_swipegestureRecogniser setDirection:UISwipeGestureRecognizerDirectionLeft];
    [view addGestureRecognizer:_swipegestureRecogniser];
}

- (void) swipeGesturePerformed{
    SecondViewController *object = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:[NSBundle mainBundle]];
    [self.navigationController pushViewController:object animated:YES];
}

Що вам потрібно лише мати, currentViewController має мати navigationController для належної натискання (слайдів) навігації.

1
додано

Спробуйте це...

у файлі .h

@interface MenuViewController : UIViewController {
    ViewController *mapViewObj;
}

у файлі .m

-(void) viewDidLoad {
    [super viewDidLoad];

    mapViewObj = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];

    UISwipeGestureRecognizer *swipeLeftGesture=[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeGesture:)];
    [self.view addGestureRecognizer:swipeLeftGesture];
    swipeLeftGesture.direction=UISwipeGestureRecognizerDirectionLeft;
}

-(void)handleSwipeGesture:(UIGestureRecognizer *) sender {
    NSUInteger touches = sender.numberOfTouches;
    if (touches == 2)     {
        if (sender.state == UIGestureRecognizerStateEnded)    {
            //push mapViewObj over here..
            [self.navigationController pushViewController:mapViewObj animated:YES];
        }
    }  
}
1
додано
замініть код на рядок [self.navigationController pushViewController: mapViewObj анімований: ТАК];
додано Автор DharaParekh, джерело
Ах, безуспішно доброго сер. Я завантажив його в мій заголовок і файл реалізації. Я не впевнений, чи правильно я це роблю, але я насправді використовую Google Maps API. Чи mapView не переходить безпосередньо до за замовчуванням ViewController? Я ціную ваші зусилля, однак.
додано Автор Julio Savala Lopez, джерело
Мені шкода, але я не слідуй. Що слід замінити цим розділом коду за допомогою?
додано Автор Julio Savala Lopez, джерело

Спробуйте це...

у файлі .h

@interface MenuViewController : UIViewController {
    ViewController *mapViewObj;
}

у файлі .m

-(void) viewDidLoad {
    [super viewDidLoad];

    mapViewObj = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];

    UISwipeGestureRecognizer *swipeLeftGesture=[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeGesture:)];
    [self.view addGestureRecognizer:swipeLeftGesture];
    swipeLeftGesture.direction=UISwipeGestureRecognizerDirectionLeft;
}

-(void)handleSwipeGesture:(UIGestureRecognizer *) sender {
    NSUInteger touches = sender.numberOfTouches;
    if (touches == 2)     {
        if (sender.state == UIGestureRecognizerStateEnded)    {
            //push mapViewObj over here..
            [self.navigationController pushViewController:mapViewObj animated:YES];
        }
    }  
}
1
додано
замініть код на рядок [self.navigationController pushViewController: mapViewObj анімований: ТАК];
додано Автор DharaParekh, джерело
Ах, безуспішно доброго сер. Я завантажив його в мій заголовок і файл реалізації. Я не впевнений, чи правильно я це роблю, але я насправді використовую Google Maps API. Чи mapView не переходить безпосередньо до за замовчуванням ViewController? Я ціную ваші зусилля, однак.
додано Автор Julio Savala Lopez, джерело
Мені шкода, але я не слідуй. Що слід замінити цим розділом коду за допомогою?
додано Автор Julio Savala Lopez, джерело

Перш за все, ви не можете використовувати вбудований навігаційний механізм.

Вам потрібно буде додати вигляд «ViewController» до вигляду «MenuViewController», і я рекомендую додати «ViewController» як контролер дитини в «MenuViewController».

Після цього встановіть рамку 'ViewController' збоку на екрані, а коли ви проведете пальцем або робите свій жест, просто відтворюйте його на екрані.

0
додано

Перш за все, ви не можете використовувати вбудований навігаційний механізм.

Вам потрібно буде додати вигляд «ViewController» до вигляду «MenuViewController», і я рекомендую додати «ViewController» як контролер дитини в «MenuViewController».

Після цього встановіть рамку 'ViewController' збоку на екрані, а коли ви проведете пальцем або робите свій жест, просто відтворюйте його на екрані.

0
додано

This sounds like a perfect time to use UIGestureRecognizer or, more specifically, UISwipeGestureRecognizer

0
додано
IT KPI iOS
IT KPI iOS
74 учасників

Чат обсуждения IOS. - Оффтоп, флуд, оскорбления и вбросы здесь не приняты. - За нарушение - предупреждение или mute на неделю. - За спам и рекламу - ban. Все чаты IT KPI: https://t.me/itkpi/602

ios_jobs_ua
ios_jobs_ua
27 учасників

Mobile Dev Jobs UA
Mobile Dev Jobs UA
20 учасників

Публикуем вакансии и запросы на поиск работы по направлению iOS, Android, Xamarin, RN и т.д.