繁体   English   中英

如何将选定的collectionview单元格发送到另一个视图控制器(ios)?

[英]How to send a selected collectionview cell to another view controller (ios)?

我可以在集合视图中检测到选定的行(图像),但是我需要将其发送到另一个视图控制器。 这是代码的一部分:

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {

    if let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as? CollectionViewCell {

        cell.cellImage.image = UIImage(named: images[indexPath.row])
        return cell
    } else {
        return CollectionViewCell()

    }
}

//Printinig the selected image ID in console
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath)
{
    SelectedItem = indexPath.row + 1
    print(SelectedItem)
}

//Navigate to MPViewController
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    let DestViewController = segue.destination as!  MPViewController
    DestViewController.labelText = String(SelectedItem)
}
}

在目标类中获取一个实例变量,并在准备segue时设置其值,然后在viewDidload将该字符串设置为标签的文本,例如,

 override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    let DestViewController = segue.destination as!  MPViewController
    DestViewController.yourText = String(SelectedItem) 
 }

ans in viewDidload

  yourLabel.text = yourText
//Printinig the selected image ID in console

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath)
{
    self.SelectedItem = indexPath.row + 1

    self.selectedImage = UIImage(named: images[indexPath.row]);

    print(SelectedItem)
}

//Navigate to MPViewController
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    let DestViewController = segue.destination as!  MPViewController
    DestViewController.imageSelected = self.selectedImage;
    DestViewController.selectedItem = String(self.SelectedItem);

}

现在,在MPViewController中,您可以根据需要使用数据self.imageSelected和self.selectedItem。

首先初始化变量

var imageToPass:UIImage!

然后更新didSelectItemAt函数

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath)
{
    SelectedItem = indexPath.row + 1
    print(SelectedItem)

    self.imageToPass = UIImage(named: images[SelectedItem])

    performSegue(withIdentifier: "TargetVC", sender: imageToPass) //here you give the identifier of target ViewController
}

转到您的TargetVC并初始化一个变量

var getImage:UIImage!

然后覆盖以前的VC中的功能

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {

        if segue.identifier == "TargetVC" {

            if let targetVC = segue.destination as? TargetVC {

                if let imageToPass = sender as? UIImage {

                    TargetVC.getImage = imageToPass

                }

            }

        }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM