无法识别的选择发送到实例与斯威夫特
问题描述:
我试图与swift
幻灯片应用程序,但我有一个问题,在 我main.storyboard
添加一个imageview
和一个按钮,当此按钮,用户点击幻灯片将动画。无法识别的选择发送到实例与斯威夫特
我在viewController.swift
@IBOutlet var ImageView: UIImageView!
@IBOutlet var animateBtn: UIButton!
@IBAction func animateBtnClicked(sender: UIButton) {
startAnimation()
}
var imageList:[UIImage]=[]
override func viewDidLoad() {
super.viewDidLoad()
for i in 1 ... 3{
let imagename="\(i).jpg"
imageList.append(UIImage(named: imagename)!)
}
}
func startAnimation()->(){
if !ImageView.isAnimating()
{
ImageView.animationImages=[imageList]
ImageView.startAnimating()
animateBtn.setTitle("Stop Animation", forState:UIControlState.Normal)}
else
{
ImageView.stopAnimating()
}
}
写了这个代码在appdelegate.swift我没写任何代码。
但是当我点击该按钮,显示此消息错误
2014-12-02 09:54:55.693 #4 animation photo[921:613] -[Swift._NSSwiftArrayImpl _isResizable]: unrecognized selector sent to instance 0x7f82126615d0
2014-12-02 09:54:55.698 #4 animation photo[921:613] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[Swift._NSSwiftArrayImpl _isResizable]: unrecognized selector sent to instance 0x7f82126615d0'
答
UIImageView
的animationImages
属性应该是UIImage
对象的数组,这个应用程序是坠毁。你实际设置的是一个 UIImage
对象的数组。那是因为你已经有了一个数组:
var imageList:[UIImage]=[]
...但是当你设置属性,你包这在方括号,这使现有的阵列到另一个,进一步阵列:
ImageView.animationImages=[imageList]
当ImageView开始试图为图像设置动画时,它期望其数组中的每个元素都是UIImage,但它会找到另一个数组。它试图调用一个UIImage选择,_isResizable
,数组对象上,这就是你看到的错误:
-[Swift._NSSwiftArrayImpl _isResizable]: unrecognized selector sent to instance 0x7f82126615d0
所以,只要不使用数组包装你的数组。直接将其设置为属性:
ImageView.animationImages = imageList
+0
谢谢,这个解决方案和我一起工作。 – mays 2014-12-07 19:03:10
如果使用'ImageView.animationImages = imageList'而不是'ImageView.animationImages = [imageList]',会发生什么?我不清楚你为什么似乎将数组包装在一个数组中...... – 2014-12-02 08:02:29