2016-09-25 21 views
0

私はSwiftにXcodeプログラムを書いています。私はいくつかのラベルとセルあたりの画像を持つtableviewコントローラを持っています。彼らは、最初のビューコントローラからのデータを持っています。ここまでは順調ですね。今私は、ユーザーがセルと同じラベルと画像データを含む新しいコントローラを開くセルをタップしたいと思います。次のコードでは新しいコントローラが開きますが、データの転送方法はありません。誰かが私を助けることができたら、私はとても感謝しています。ここでテーブルビューからビューコントローラにデータを渡す

は、私が使用する傾向があるコードです:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 


    let cellIdentifier = "TableView" 
    let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath: indexPath) as! TableView 


    let picture = pic[indexPath.row] 



    cell.label1.text = picture.name1 
    cell.photoImage.image = picture.photo 
    cell.label2.text = picture.name2 


    return cell 


} 

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 


    tableView.deselectRowAtIndexPath(indexPath, animated: true) 


    let cell = indexPath.row 

    self.performSegueWithIdentifier("segue", sender: cell) 

} 

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

    if segue.identifier == "segue"{ 

     var row = tableView.indexPathForSelectedRow 

     let viewController = segue.destinationViewController as! vc2 

    } 

} 

PS:私は、識別子「セグエ」と新しいコントローラへのイメージからセグエを持っています。 PPS:私は、次の方法を試してみましたもちろん:Send data from TableView to DetailView Swiftが、私は私のプログラムを実行したとき、私は私のラベルが予期せず

+0

あなたのViewControllerでIBOutletsにラベルを接続しましたか? –

+0

はい、セル内のラベルはtableviewcellファイルに接続されていて、宛先コントローラ内のラベルはコントローラーに接続されています – j3a3n3

答えて

0

あなたがこれを行うにはperformSegueWithIdentifierをdidSelectRowAtIndexPathを上書きするか、呼び出す必要はありませんnilを発見されたという情報とエラーが出ます。あなたのセグをIBファイルに接続して、テーブルビューコントローラのセルから2番目のコントローラにドラッグします。 segue.destinationViewController内のprepareForSegueのコントローラにデータを渡す必要があります。その宛先コントローラでパブリックプロパティを設定します。

また、プロトタイプセルのラベルがIBで接続されていることを確認してください。彼らが彼らであれば、無限にならないでください。これを確認するには、cellForRowAtIndexPathにブレークポイントを設定します。

宛先コントローラのラベルについて話している場合を除きます。これらはまた、IBに繋がれる必要があります。 prepareForSegueでそれらを設定します。

let viewController = segue.destinationViewController as! vc2 
var path = tableView.indexPathForSelectedRow 

viewController.destLabel.text = arrayData[path.row].myData // or whatever data you have from your model. 
+0

私はそれを提案したとおりに行いました。データはまだ転送されませんでした。さらに、追加のセルを作成しようとすると、エラー(ラベルが見つからない)が表示されます。 – j3a3n3

関連する問題