使用滑动手势识别器从一个视图控制器滑动到另一个

Posted

技术标签:

【中文标题】使用滑动手势识别器从一个视图控制器滑动到另一个【英文标题】:using swipe gesture recognizer swipe from one viewcontroller to another 【发布时间】:2015-01-27 13:03:07 【问题描述】:

向右滑动

UISwipeGestureRecognizer *swipeRight = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(slideToRightWithGestureRecognizer:)];
swipeRight.direction = UISwipeGestureRecognizerDirectionRight;
[self.view addGestureRecognizer:swipeRight];

向左滑动

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

在“slideToRightWithGestureRecognizer”方法上,我想编写代码来打开 abcViewController,它在情节提要上有一个视图控制器,并且与“slideToLeftWithGestureRecognizer”相同,以打开在情节提要上也有视图控制器的 xyzViewController。在程序中不使用导航视图控制器

【问题讨论】:

您的情节提要上是否连接了这些视图控制器,或者它们是否有 ID?向我们展示您的设置 @Daniel 我给了他们故事板 ID 【参考方案1】:

应该很容易完成:

当 ViewControllers 连接到您的故事板上时,您可以轻松地这样做:

- (void)slideToLeftWithGestureRecognizer:(id)sender 
    [self performSegueWithIdentifier:@"myConnectionIdentifierHere"]

如果没有:

- (void)slideToLeftWithGestureRecognizer:(id)sender 
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"myStoryboardName" bundle:nil];
    UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"myViewControllerIdentifierHere"];
    [self presentViewController:vc animated:YES completion:nil];

【讨论】:

【参考方案2】:

您是否考虑过使用UIPageViewController?或者它是否必须是滑动而不是平移手势(UIPageViewController 使用平移手势交互地提供视图控制器之间的导航)。

【讨论】:

其实它目前是通过pageviewContoller实现的,它使用按钮,当我们按住并拖动它们时它会移动,因此每个viewcontoller(三个视图控制器)的左右两侧都有按钮。我的任务是删除按钮,当用户向左滑动时,它会转到 leftviewController,当用户向右滑动时,它会转到 rightViewController

以上是关于使用滑动手势识别器从一个视图控制器滑动到另一个的主要内容,如果未能解决你的问题,请参考以下文章

改变滑动手势识别器的过渡

滑动手势识别器对我不起作用

MWFSlideNavigationViewController 不使用从 NIB 文件创建的滑动手势识别器

使用带有自定义容器视图控制器的滑动手势识别器崩溃

如何将手势识别器从一个视图传递到另一个视图

识别视图中的滑动手势而不是子视图