2017-02-23 12 views
1

したがって、Swiftでpresent()関数を使用しようとすると、常にクラッシュします。ここに私のコードは、私がpresent(_:animated:completion:)機能を使用するたびに、私はEXC_BREAKPOINTエラーを取得現在Swift 3で動作していません(_:animated:completion :)

func infoOpener(sender: UISwipeGestureRecognizer) { 

    let location: CGPoint = sender.location(in: tableView) 

    let cellPath: IndexPath = tableView.indexPathForRow(at: location)! 


    let VC = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "userInfo") as! userInfoVC 

    VC.username = "@\(self.user[cellPath.row].username)" 
    VC.imageUrl = self.user[cellPath.row].imagePath 


    self.present(VC, animated: false, completion: nil) 

} 

です。誰かが私を助けることができますか?

func infoOpener(sender: UISwipeGestureRecognizer) { 

    let location: CGPoint = sender.location(in: tableView) 

    guard let cellPath: IndexPath = tableView.indexPathForRow(at: location) else { 
     print("No index path found") 
     return 
    } 

    guard let VC = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "userInfo") as? userInfoVC else { 
     print("View controller could not be instantiated") 
     return 
    } 

    VC.username = "@\(self.user[cellPath.row].username)" 
    VC.imageUrl = self.user[cellPath.row].imagePath 


    self.present(VC, animated: false, completion: nil) 

} 
+0

まず、VCのオブジェクトが正しく作成されているかどうかを確認します。私はチェックオブジェクト 'VC'がゼロであるかどうかを意味します。 –

+0

selfの呼び出しの前にブレークポイントを設定し、VCがnilであるかどうかを確認してください – Makaille

+0

コードが正しいので、送信しているデータをチェックしてください。cellPathの値が正しいかどうかは –

答えて

3

使用if letまたはguard let " 問題はおそらくpresent()メソッドではなく、あなたのViewController上のいくつかのIBOutletまたは変数にあります。 すべてのコンセントが正しく接続されていることを確認するか、この変数がnilを受け入れない場合は、 "username"と "imageURL"で設定しているものがnilでないことを確認してください。

1
func infoOpener(sender: UISwipeGestureRecognizer) { 

      let location: CGPoint = sender.location(in: tableView) 
      let cellPath: IndexPath = tableView.indexPathForRow(at: location)! 

      if sender.state == .ended /*present in touch end*/ { 
       let VC = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "userInfo") as! userInfoVC 
       VC.username = "@\(self.user[cellPath.row].username)" 
       VC.imageUrl = self.user[cellPath.row].imagePath 
       self.present(VC, animated: false, completion: nil) 
      } 
     } 
+0

もう一度クラッシュしました。他に何か? –

+0

cellPath変数を宣言していますか? –

+0

実際にあなたのメソッドinfoOpenerはどこですか...通常self.presentは、私自身にエラーが発生した場合、ビューコントローラではありません。 –

0

をあなたの誤差があると言う:「致命的なエラー:予期せずにオプションの値をアンラップしながら、nilを見つける代わりに、あなたのコードをより堅牢にするために!でOptionalsをアンラップ力の

関連する問題