当我单击轮播时显示的特定图像时,我试图触发特定的选择。
我遇到了错误:
使用未解决的标识符“ 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)
}
}
答案 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.
}
}
}