滑动视图和调用方法?

Swipe view and call method?

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

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

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

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

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

任何人都可以就处理这种情况的最佳方法以及我应该使用什么 tools/methods/classes/etc 给我建议,例如我应该使用 "page view controller" 还是 [=14] =] 查看等

如果有人可以帮助我指导做什么,我可以独立去研究我需要做什么!感谢任何人的帮助,我正在为这种情况而苦苦挣扎!

注意: 数组可以是 10 到 500 之间的任何地方,不太可能,但可能有 1000 个我将从 Web 调用的不同对象,所以我不确定最好的方法能够有效地加载对象并避免占用内存和space。

首先,您似乎有很多数据需要显示或显示给用户。在这种情况下,您肯定需要 use/create 重用机制以防止内存警告。

有几种方法可以做到:

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

  2. 使用 UICollectionView 并添加也使用容器模式将 UIViewController 的视图添加为集合单元格中的子视图。当您显示 UIViews 时,这种方法非常好,它提供了重用机制,但是在 UIViewController.

  3. 中使用它可能会很棘手
  4. 最后的选择,从我的角度来看,最好的选择是使用 UIPageViewController,它提供重用机制并处理 UIViewController 子类。还为过渡提供了很酷的动画。

注意:请检查在 iPhone 上使用它所需的最低 iOS 版本。对于 iPad 分钟 iOS 是 iOS 5.

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

你好,你可以试试这个 "Possible Method 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
        }
    }
}