滑动视图和调用方法?

Posted

技术标签:

【中文标题】滑动视图和调用方法?【英文标题】:Swipe view and call method? 【发布时间】:2015-04-23 07:52:03 【问题描述】:

我正在创建一个应用,但不知道最好的方法。

我想创建一个具有标签和UIimageview 的视图。我希望用户能够像页面应用程序一样向左或向右无限滑动。每次用户滑动时,它都会滑动到相同的视图控制器,除了具有不同的标签和从数组调用的UIimage

问题是我不确定解决这个问题的最佳方法?

Possible Method 1。有没有办法使用 1 个视图控制器并编写代码以允许用户将单个视图向左或向右滑动到完全相同的视图控制器上,只需更新标签和照片?

Possible Method 2。我可以制作两个(或可能三个)相同的视图控制器,用户可以在它们之间无限滑动,例如用户从视图 1 开始并向右滑动以查看 2,然后向右滑动以再次查看 1 等,但是每次用户滑动另一个视图控制器将加载数组中的下一个数据(或上一个取决于滑动的方向)

谁能给我建议解决这种情况的最佳方法,以及我应该使用哪些工具/方法/类/等来实现这一点,例如我应该使用“页面视图控制器”还是UIScroll查看等

如果有人可以帮助我指导我该做什么,我可以独立研究我需要做什么!感谢任何人的帮助,我正在努力解决这种情况!

注意: 数组可能是 10 到 500 个之间的任意位置,而且不太可能,但可能是 1000 个我将从 Web 调用的不同对象,因此我不确定能够加载的最佳方式有效地处理对象并避免占用内存和空间。

【问题讨论】:

我可能会使用UICollectionViewController进行分页.. 【参考方案1】:

首先,您似乎有很多数据需要显示或显示给用户。在这种情况下,您必须使用/创建重用机制来防止内存警告。

有几种方法可以做到:

    使用UIScrollView 并添加使用容器模式将UIViewController 的视图作为子视图添加到UIScrollView。这种方法的主要缺点是您必须创建自己的重用机制。

    使用UICollectionView 并添加还使用容器模式将UIViewController 的视图添加为集合单元格中的子视图。当你显示UIViews时,这种方法非常好,它提供了重用机制,但与UIViewController一起使用可能会很棘手。

    最后一个选择,在我看来,最好的选择是使用UIPageViewController,它提供重用机制并处理UIViewController 子类。还为过渡提供了很酷的动画。

注意:请检查所需的最低 ios 版本,以便在 iPhone 上使用它。对于 iPad,最小 iOS 是 iOS 5。

关于无限滚动,你可以通过2,3点的数据源来实现。 (两种实现都需要数据源)

【讨论】:

【参考方案2】:

您好,您可以在“可能的方法 1”方法中尝试此方法

在视图控制器的“ViewDidLoad”函数中添加以下内容。

    var swipeRight = UISwipeGestureRecognizer(target: self, action: "respondToSwipeGesture:")
    swipeRight.direction = UISwipeGestureRecognizerDirection.Right
    self.view.addGestureRecognizer(swipeRight)

    var swipeLeft = UISwipeGestureRecognizer(target: self, action: "respondToSwipeGesture:")
    swipeLeft.direction = UISwipeGestureRecognizerDirection.Left
    self.view.addGestureRecognizer(swipeLeft)

然后添加这个函数并加载相关的标签/图像值。

  func respondToSwipeGesture(gesture: UIGestureRecognizer) 

    if let swipeGesture = gesture as? UISwipeGestureRecognizer 

        switch swipeGesture.direction 
        case UISwipeGestureRecognizerDirection.Right:
            // Set your Label and Image Values here for RIGHT swipe
            ...

        case UISwipeGestureRecognizerDirection.Left:
            // Set your Label and Image Values here for LEFT swipe
            ...

        default:
            break
        
    

【讨论】:

以上是关于滑动视图和调用方法?的主要内容,如果未能解决你的问题,请参考以下文章

水平滚动时滚动视图的默认方法是啥?

如何检测在表视图委托方法中调用的 UIActionSheet 按钮的点击?

iOS 13 Modals - 以编程方式调用滑动解除

未调用 UiTableView didSelectRowAt 方法

iOS14.2 SwiftUI PageTabView 会多次调用 ChildView onAppear 方法

从右向左滑动时未调用 UISplitViewControllerDelegate/UIPopoverDelegate 方法