を使用してUIImageViewを更新している間は、どのCollectionViewCell上のユーザーのクリックは、新しいビューががをスクロールとをズームするために表示されるとき、です。基本的に私はMyCollectionViewControllerとMyScrollViewControllerという2つの異なるクラスを持っています。クラッシュ:私は実装したい何SDWebImage
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath){
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let VC = storyboard.instantiateViewController(withIdentifier: "myScrollVC") as? MyScrollViewController
self.navigationController?.pushViewController(VC!, animated: true)
VC?.setImageToScrollView(image_URL: (self.jsonData?.HD_WALLPAPER![indexPath.row].wallpaper_image)!)
}
そして私は私のスクロールビューコントローラのコード部分を、次のしている:私は私のコレクションビューコントローラのコード部分を、次のしている私はSDWebImage ...オープンソースのライブラリを使用しています
import UIKit
import SDWebImage
class MyScrollViewController: UIViewController, UIScrollViewDelegate {
@IBOutlet weak var myImageView: UIImageView!
@IBOutlet weak var myScrollView: UIScrollView!
override func viewDidLoad(){
super.viewDidLoad()
self.myScrollView.minimumZoomScale = 1.0
self.myScrollView.maximumZoomScale = 6.0
}
public func setImageToScrollView(image_URL: String){
DispatchQueue.main.async {
self.myImageView!.sd_setImage(with: URL(string: image_URL), completed: {
(image, error, cacheType, url) in
//Completion Block ... Do Nothing
})
}
}
override func didReceiveMemoryWarning(){
super.didReceiveMemoryWarning()
}
func viewForZooming(in scrollView: UIScrollView) -> UIView?{
return self.myImageView
}
}
画像キャッシュを管理する。
問題:エラーを以下にSDWebImage枠組みのsd_setImage APIを実行しながら、時々画像がエラーなしで正常にロードされますが、ほとんどの時間は、私のアプリがクラッシュ ......
致命的なエラー:オプションの値
をアンラップしながら、予期せずnilを見つけQUERY:
- は、まず私がpushViewControllerと呼ばれ、その後、私は私のカスタム定義関数と呼ばれます。コレクションビューのセルから関数を呼び出す方法は適切ですか?
- オプションの値をアンラップしている間に予期せずnilが見つかったのはなぜですか?エラーフリーの画像URLが表示されます。
それは 'self.myImageView'が' nil'だと思われます –
@RajibTheKing強制的にアンラップするのではなくimageViewのバインディングをしてください。あなたのimageViewはいつもあなたのアプリがクラッシュするためにいつも無事になっています –