请选择 进入手机版 | 继续访问电脑版
  • 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - UICollectionView 快速滚动/滑动到下一个项目

[复制链接]
菜鸟教程小白 发表于 2022-12-11 16:36:27 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我在 View Controller 中有一个 UICollectionView。当用户单击其中一个图像时,它会转到一个单独的页面以打开该图像。我不想每次都回到画廊更换图片,而是向左或向右滑动以获取下一张或上一张图片。

我已经看到了“pagingEnabled = true”的答案,但是你把它放在哪里呢?

我是 swift 新手。

下面是我的代码。我在这里先向您的帮助表示感谢。

ViewController.swift

import UIKit

class ViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate
{
@IBOutlet weak var collectionView: UICollectionView!

let appleProducts = ["iPhone", "Apple Watch", "Mac", "iPad"]
let imageArray = [UIImage(named: "pug"), UIImage(named: "pug2"), UIImage(named: "pug3"), UIImage(named: "pug4")]

override func viewDidLoad()
{
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
}

override func didReceiveMemoryWarning()
{
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int
{
    return self.appleProducts.count
}

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell
{

    let cell = collectionView.dequeueReusableCellWithReuseIdentifier("cell", forIndexPath: indexPath) as! CollectionViewCell

    cell.imageView?.image = self.imageArray[indexPath.row]

    cell.titleLabel?.text = self.appleProducts[indexPath.row]

    return cell

}

func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath)
{
    self.performSegueWithIdentifier("showImage", sender: self)
}

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)
{
    if segue.identifier == "showImage"
    {
        let indexPaths = self.collectionView!.indexPathsForSelectedItems()!
        let indexPath = indexPaths[0] as NSIndexPath
        let vc = segue.destinationViewController as! NewViewController
        vc.image = self.imageArray[indexPath.row]!
        vc.title = self.appleProducts[indexPath.row]
    }
}

}

CollectionViewCell.swift

import UIKit

class CollectionViewCell: UICollectionViewCell
{
@IBOutlet weak var imageView: UIImageView!
@IBOutlet weak var titleLabel: UILabel!
}

NewViewController.swift

import UIKit

class NewViewController: UIViewController
{
@IBOutlet weak var imageView: UIImageView!
var image = UIImage()

override func viewDidLoad()
{
    super.viewDidLoad()

    self.imageView.image = self.image
}

override func didReceiveMemoryWarning()
{
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}


/*
// MARK: - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    // Get the new view controller using segue.destinationViewController.
    // Pass the selected object to the new view controller.
}
*/

}



Best Answer-推荐答案


在点击后显示的 View Controller 中,您应该制作一个水平滚动的UICollectionView。在此 Collection View 上,将其 pagingEnabled 属性设置为 true。

接下来要做的是在父 View Controller 中重新格式化 prepareForSegue 方法,以将整个图像数组传递给呈现的 View Controller 以及选定的索引路径。

然后,在您呈现的 View Controller 中,您应该将 Collection View 的数据源配置为显示所有图像,但确保从父 View Controller 传递的初始选定索引路径开始。

关于ios - UICollectionView 快速滚动/滑动到下一个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37501901/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap