无法识别的选择发送到实例与斯威夫特

问题描述:

我试图与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' 
+0

如果使用'ImageView.animationImages = imageList'而不是'ImageView.animationImages = [imageList]',会发生什么?我不清楚你为什么似乎将数组包装在一个数组中...... – 2014-12-02 08:02:29

UIImageViewanimationImages属性应该是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