簡體   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