调用下一个视图控制器的选定索引

时间:2018-08-23 18:44:01

标签: swift xcode

当我单击轮播时显示的特定图像时,我试图触发特定的选择。

我遇到了错误:

  

使用未解决的标识符“ SelectedIndex”

最终目标是为我阵列中的每个图像触发检测。

这是我的代码:

import UIKit

class PacksPage: UIViewController {
    @IBOutlet weak var iCarouselView: iCarousel!

    var imageArray = [  UIImage(named:"PeoplePack") ,
                        UIImage(named:"MachineryPack") ,
                        UIImage(named:"ArchitecturePack") ,
                        UIImage(named:"MoneyPack") ,
                        UIImage(named:"AnimalPack") ,
                        UIImage(named:"PrimitivePack") ,
                        UIImage(named:"GalacticPack") ]

    override func viewDidLoad() {
        super.viewDidLoad()
        iCarouselView.type = .invertedCylinder
        iCarouselView.contentMode = .scaleAspectFill
    }
}

extension PacksPage: iCarouselDelegate, iCarouselDataSource{
    func numberOfItems(in carousel: iCarousel) -> Int {
        return imageArray.count
    }

    func carousel(_ carousel: iCarousel, viewForItemAt index: Int, reusing view: UIView?) -> UIView {
        var imageView: UIImageView!
        if view == nil {
            imageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 400, height: 530))
            imageView.contentMode = .scaleAspectFit
        } else {
            imageView = view as? UIImageView
        }

        imageView.image = imageArray[index]
        return imageView
    }

    func carousel(_ carousel: iCarousel, didSelectItemAt index: Int)
    {
        SelectedIndex = index
        self .performSegue(withIdentifier: "ShowAnimalPack", sender: nil)
    }
}

1 个答案:

答案 0 :(得分:0)

错误“使用无法解析的标识符'SelectedIndex'”意味着您正在尝试调用当前作用域中尚未定义的内容。

在这里,您没有使用“ SelectedIndex”名称描述的任何内容。

从您的代码中,我了解到您正在尝试为下一个View Controller调用选定的索引。 如果是这种情况,我希望您在目标视图控制器中有一个名为Int类型的变量selectedIndex。

//根据您的评论编辑

在PacksPage类中具有一个描述变量,以保存所选Index的值,例如:

var index: Int?

在您选择的索引方法中,

func carousel(_ carousel: iCarousel, didSelectItemAt index: Int)
{
    self.index = index
    self .performSegue(withIdentifier: "ShowAnimalPack", sender: nil)
}

这会将单元格的索引值存储在self.index上。然后,您可以准备segue并将相同的值传递给下一个视图控制器,如下所示。

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "ShowAnimalPack"{
        if let  destinationController = segue.destination as? DestinationControllerClass{
        destinationController.selectedIndex = index // where index is a variable in your PacksPage class to which you may assign a value when the carousel item is clicked.
        }
    }
}