2014-09-18 19 views
0

我有一个UITableViewController,当我点击它时,它将显示一个DetailViewUIController。 我想添加一个功能,当我在DetailViewUIController中,并向右滑动时,它将显示下一个项目的DetailViewUIController,当它离开时,它将显示前一个项目。如何在swift中构建swipe视图控制器

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

我的TableView中的条目数量可能很长,我怎么能动态地做同样的事情,即没有创建子视图控件的静态数量并添加为'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个元素(这是我的所有对象的整个集合。

因此setContentOffset()不会改变我在Detail View中显示的内容,无论我在TableView中单击哪个项目来启动Detail View。

任何想法解决这个问题?

谢谢。

回答

0

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

+0

谢谢。我创建了一个CollectionViewController,并且XCode在StoryBoard的CollectionViewController中创建了一个CollectionView。但默认情况下,单元格大小为50 X 50.我如何使单元格的大小与屏幕相同? – hap497 2014-09-18 23:02:18

+0

@ hap497,您只需在故事板中拖动角落,或在集合视图的大小检查器中设置大小。您还可以使用itemSize属性在代码中设置它。 – rdelmar 2014-09-18 23:04:44

+0

再次感谢。还有一个问题。用户可以点击我的表格视图中的第5个元素来启动细节视图。我的详细视图控制器的视图如何成为集合视图在第一次启动时跳转到第5个元素?并向左滑动会显示第六个? – hap497 2014-09-18 23:26:44

相关问题