2014-12-02 68 views
1

我試圖與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

回答

1

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

相關問題