2017-04-20 8 views
0

は、XcodeのiOSの迅速UICollectionviewcellは、スナップショットのエラー

fatal error: unexpectedly found nil while unwrapping an Optional value

please click here for screenshot of that error

をスローします

は、ここに私の機能

func screenshotBSCell() { 
     //Create the UIImage 

     UIGraphicsBeginImageContext(CGSizeMake(bsCell.bounds.size.width, bsCell.bounds.size.height)) 
     ***self.bsCell.layer.renderInContext(UIGraphicsGetCurrentContext()!)*** 
     let image = UIGraphicsGetImageFromCurrentImageContext() 
     UIGraphicsEndImageContext() 

     //Save it to the camera roll 
     UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil) 

     //share the image to Social Media 
     let composeSheet = SLComposeViewController(forServiceType: SLServiceTypeFacebook) 
     composeSheet.setInitialText("Hello, Facebook!") 
     composeSheet.addImage(image) 

     presentViewController(composeSheet, animated: true, completion: nil) 

    } 
+0

self.bsCellインスタンスをデバッグしてチェックしますか? – Surjeet

+0

アプリがself.bsCell.layer.renderInContext((UIGraphicsGetCurrentContext())行でクラッシュする) –

+0

'screenshotBSCell'はどこで呼び出されますか?問題は、 'UIGraphicsGetCurrentContext()'がnilを返し、強制的にアンラップ(そうしないでください:)してクラッシュすることです。だから... 'UIGraphicsBeginImageContext'へのあなたの呼び出しが期待通りに動作しないようです。 @Surjeetが示唆しているように、あなたの 'bsCell'がnilでないことを確認し、' bsCell'のサイズを確認して、それが有効であることを確認してください。 – pbodsk

答えて

0
func screenshotBSCell(sender:AnyObject) { 
     //Create the UIImage 
     let indexpath = NSIndexPath.init(row: sender.tag, section: 0) 

     self.bsCell = colletctionview!.dequeueReusableCellWithReuseIdentifier("cell", forIndexPath: indexPath) as! bsCell 
     UIGraphicsBeginImageContext(CGSizeMake(cell.bounds.size.width, cell.bounds.size.height)) 
     ***self.bsCell.layer.renderInContext(UIGraphicsGetCurrentContext()!)*** 
     let image = UIGraphicsGetImageFromCurrentImageContext() 
     UIGraphicsEndImageContext() 

     //Save it to the camera roll 
     UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil) 

     //share the image to Social Media 
     let composeSheet = SLComposeViewController(forServiceType: SLServiceTypeFacebook) 
     composeSheet.setInitialText("Hello, Facebook!") 
     composeSheet.addImage(image) 

     presentViewController(composeSheet, animated: true, completion: nil) 

    } 

FUNCのリクを作るですこれはあなたの問題を解決します。あなたがこの関数を呼び出したとき、それはあなたのためのセルを作成するので、ゼロセルを取得しません。

0

これは最小限の変更で動作します。みんな、ありがとう!

func screenshotPulseCell(sender: UIButton) { 

    //Create the UIImage 
    UIGraphicsBeginImageContext(plCell.frame.size) 
    self.plCell.contentView.layer.renderInContext((UIGraphicsGetCurrentContext())!) 
    let image = UIGraphicsGetImageFromCurrentImageContext() 
    UIGraphicsEndImageContext() 

    //Save it to the camera roll 
    UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil) 

    //share the image to Social Media 
    let composeSheet = SLComposeViewController(forServiceType: SLServiceTypeFacebook) 
    composeSheet.setInitialText("My Pulse!") 
    composeSheet.addImage(image) 

    presentViewController(composeSheet, animated: true, completion: nil) 

}