2016-04-27 11 views
0

Swiftに新規入会してください。私はTable View Cellにほぼ3つのボタンを持つアプリケーションを作っています。 1つは共有のためのもので、他の2つは他の目的のためのものです。共有ボタンのコードを追加する前に、すべてがうまくいきました。他の2つのボタンはうまくいきましたが、今すぐ、私はの'Else'部分にエラーが表示されます。ここで、セルは別のView Controllerにつながります。私が間違っているところを理解するのを助けてください。swift - EXC_BAD_INSTRUCTION(コード= EXC_I386_INVOP、サブコード= 0x0)(テーブルビューあり)

私はあなたの問題はあなたが共有ボタンをクリックすると、セルが「選択」状態にならないので、あなたが

self.tableViews.indexPathForSelectedRow! 

呼び出す方法がクラッシュにつながることかもしれないと思う

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 

    if segue.identifier == "showView" 
    { 
     let vc = segue.destinationViewController as UIViewController 

     let controller = vc.popoverPresentationController 



     //vc.preferredContentSize = CGSizeMake(265, 400) 


     if controller != nil 
     { 
      controller?.delegate = self 
     } 


    } 
    else{ 
     //STotal.removeAll() 
     let indexpath: NSIndexPath = self.tableViews.indexPathForSelectedRow! 
     //error in the above line 
     //let DestViewController = segue.destinationViewController as! CellViewController 

     var newName : String 
     var newDetails : String 
     var newTime : String 
     var newTitle : String 
     var newImage : UIImage 


     newName = names[indexpath.row] 
     newTitle = breeds[indexpath.row] 
     newTime = timeDisp[indexpath.row] 
     newDetails = texty[indexpath.row] as! String 
     newImage = images[indexpath.row]! 

     SName = newName 
     STitle = newTitle 
     STime = newTime 
     SDetails = newDetails 
     SImages = newImage 

     // DestViewController.SName = newName 
     self.tableViews.deselectRowAtIndexPath(indexpath, animated: true) 


    } 

} 
+0

不正な命令例外の正確な種類は何ですか?ちょうど 'EXC_BAD_INSTRUCTION'は非常に広くあります。 – vadian

+0

エラー全体をあなたと共有していますか? –

+0

例外メッセージには理由が含まれることがよくあります。その理由を十分に知ることができます。 – vadian

答えて

2

選択されていない行があり、強制的に展開する必要があります。 indexPathが実際に選択されているかどうかを確認するために

func didPressShareButton(sender: UITableViewCell) { 
     let indexPath = tableView.indexPathForCell(sender) 
     // prepare your DetailViewController now/show segue 
} 
+0

今、私は何をしますか? –

+0

セルにあるボタンにある特定のアクションを実行させ、そのボタンが押されたら、そのセルに含まれている情報を次のビューに移動します。 –

+0

正直なところ、このコードにはアーキテクチャに複数の問題があります。しかし、あなたのための最も速い方法は、間に別の機能を持つことかもしれません。私は私の答えを更新します。 – Alex

0

チェック:

一つの可能​​な解決策は、次のようなものかもしれません。

var indexPath = NSIndexPath() 
if let path = tableViews.indexPathForSelectedRow { 
    indexPath = path 
} else { 
    //Do something if there is no indexPath selected 
    return//end function 
} 
関連する問題