如何在swift中构建滑动视图控制器

时间:2014-09-18 22:30:20

标签: ios swift

我有一个UITableViewController,当我点击它时,它会显示一个DetailViewUIController。 我想添加一个功能,当我在DetailViewUIController中时,我向右滑动,它将显示下一个项目的DetailViewUIController,当它离开时,它将显示上一个项目。

我在swift中找到了一种链接。但它只有3个静态子视图控制器。 https://medium.com/swift-programming/ios-swipe-view-with-swift-44fa83a2e078

我的TableView中的条目数量可能很长,我怎么能动态地做同样的事情,即没有创建静态数量的subviewcontroller并添加为'addChildViewController'?

更新

再次感谢@rdelmar的帮助。

我无法将'集合视图的contentOffset设置为(集合视图宽度)* selectedRow'工作。

在我的prepareForSegue函数中,我添加了:

  x = Float(indexPath.row) * 375.0
  var point = CGPointMake(CGFloat(x), 0)
  println ("***x=")
  println (x)
  detailController.collectionView?.setContentOffset(point , animated: false)

其中detailController是UICollectionViewController。

并在

override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
        let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as DetailViewCell

        // Configure the cell
        println("DetailViewController in cellForItemAtIndexPath()")
        println(indexPath.row)
     cell.myitem = allItems[indexPath.row]

返回细胞    }

我总是看到cellForItemAtIndexPath尝试获取allItems的第0个元素(这是我所有对象的整个集合。

因此,无论我在TableView中单击哪个项目来启动详细信息视图,setContentOffset()都不会更改我在详细信息视图中显示的内容。

有什么想法解决这个问题吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

有很多不同的方法可以做到这一点。一种方法是使您的详细视图控制器视图成为集合视图(启用分页),其单元格与屏幕大小相同。您需要传入用于填充表的数组,以便集合视图可以填充其单元格。这将是非常有效的,因为集合视图只需要实例化两个单元格。