我在其中一个视图控制器中设置了iCarousel,我想简单地传递用户点击下一个视图控制器的相同图像。以下是我在关于Carousel VC的prepareForSegue中所拥有的内容:
var padIndex = [UIImage]()
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let nextVC = segue.destination as! BlackViewController
let indexPath = sender as! NSIndexPath
nextVC.pad = self.images[indexPath.row]
}
然后在我的第二个VC中,我有:
var pad = UIImage()
@IBOutlet weak var padImage: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
padImage.image = pad
}
似乎是一件简单的事情,但我不断收到错误消息:
无法转换类型' SampleSequencer.ChooseViewController' (0x10213fe38)到' NSIndexPath' (0x1025b8440)。
提前感谢十亿人!
答案 0 :(得分:1)
例外是告诉你,你有非法演员。错误在这里:
let indexPath = sender as! NSIndexPath
sender
的{{1}}参数说它可以是prepare(for:sender:)
,但实际上,它并不是非常有用,因为你无法确定它会是什么。您必须使用委托的Any?
方法从IndexPath
(可能是您自己的视图控制器,如果它实现iCarouselDelegate
)获取iCarouselDelegate
。