Scrollview与Collectionview。获取“可见图像”

时间:2018-08-14 22:15:51

标签: ios swift xcode xcode9

我要实现的目标:我有一系列要水平滑动/滚动浏览的图像。这些图像代表联系人。找到所需的联系人(图像)后,按一个单独的“开始通话”按钮。此按钮可以连接到“电话”视图控制器。我需要在“电话”视图控制器上显示我正在呼叫的人的图像。为此,我需要在启动segue之前知道我在使用哪个联系人图像。

My contacts view controller. Currently showing my scrollview attempt

我目前拥有的东西:我已经设置了一个滚动视图和一个单独的collectionview(它们之间没有任何联系。我之所以拥有这两个原因,是因为我试图弄清楚哪个会得到我需要的东西)。两者均功能齐全,可让我翻阅阵列中的图像。 当我按下将按钮启动到下一个视图控制器的按钮时,我不知道如何实用地显示哪个图像。

我最初试图标记图像,然后检索标记并将其通过segue传递给下一个视图控制器。 然后,我尝试获取“当前可见”图像的索引,并通过segue传递它。

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "ImageCollectionViewCell", for: indexPath) as! ImageCollectionViewCell

    cell.imgImage.image = imageArray[indexPath.row]

    //Get character for segue
    selectedCharacter = indexPath.row

    return cell
}

我还尝试获取图像名称并通过segue传递。

func collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath) {
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "ImageCollectionViewCell", for: indexPath) as! ImageCollectionViewCell
    switch cell.imgImage.image{
        case UIImage(named: "Van"):
            selectedCharacter = 2
        case UIImage(named: "Fel"):
            selectedCharacter = 3
        default:
            selectedCharacter = 1
    }
}

我还没有办法找到使用scrollview获取信息的任何方法。 Scrollview viewDidLoad代码:

@IBOutlet var scrollView: UIScrollView!


for i in 0..<images.count {
        let imageView = UIImageView()
        let x = self.view.frame.size.width * CGFloat(i)
        imageView.frame = CGRect(x: x, y: 0, width: 343, height: 244)
        imageView.contentMode = .scaleAspectFit
        imageView.image = images[i]
        imageView.tag = i

        scrollView.contentSize.width = scrollView.frame.size.width * CGFloat(i + 1)
        scrollView.addSubview(imageView)
    }

问题:是否有人对我要联系的联系人有任何想法?是否应该使用滚动视图或集合视图?

谢谢!

2 个答案:

答案 0 :(得分:0)

您可以使用收藏夹视图。创建一个具有image属性的自定义单元格类。当您要在cellForItem函数中返回单元格时,可以设置image属性。

let cell = collectionView.dequeueReusableCellWithIdentifier("Your Cell's identifier", forIndexPath: indexPath)
cell.image = imageArray[indexPath.item]

然后,您可以覆盖didSelectItem,并在传递的image处访问单元格的indexPath属性,如下所示:

let cell = collectionView!.cellForItemAtIndexPath(indexPath)
let image = cell.image
// do whatever you need with the image.

答案 1 :(得分:0)

我不知道您在哪里单击,但是您可以通过以下方法获取当前视图索引:      让索引= scrollView.contentOffset.x / scrollView.bounds.size.width collectionView或scrollview相同