2016-09-30 6 views
1

私はこの質問が何度も尋ねられていることを知っています。最後の2日間からお試しください。私を助けてください。スウィフトは、tableviewとviewControllerの間の値を渡します

私は、カスタムテーブルビューは、このテーブルビューの配列から次のビューにいくつかのデータを渡すしようとしている。

エラー:予期しないことに、オプション値のアンラッピング中にnilが見つかりました。

多くの方法を試みましたが成功しませんでした。

EDITED

は、最後にあなたのロジックが間違っている

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


    if segue.identifier == "SegueToQR" 
    { 
     let controller = segue.destinationViewController as! QRcodeViewController 
     if let button = sender as? UIButton { 
      let cell = button.superview?.superview?.superview as! PatientTableViewCell 
      controller.passName = cell.patientName.text 
      controller.passAdress = cell.adress.text 
     } 
    } 

    } 
+0

QRcodeViewControllerのコードを含めることはできますか?具体的には、passNameとpassAdressのプロパティが定義されていますか? –

+1

'performSegueWithIdentifier(" SegueToQR "、送信者:!UIButtonとしての送信者)のようにしてください ' –

+0

これを見てくださいhttp://www.itstrike.cn/Question/27c2fa4b-0c1b-43cc-8b1a-5263b2d401c1.html –

答えて

1

を解決しました。 UITableViewは、画面に表示されているセルのみを保持します。したがって、表示されていないセルにアクセスしようとすると、nil例外が発生します。

最初にインデックスを取得するためにCGPointを使用しないでください。セルの各ボタンにタグを割り当て、そのボタンをperformSegue関数の送信側パラメータに渡します。

次に、患者データをアレイ内に維持する必要があります。そして、配列へのインデックスとしてbutton.tagを使用してデータにアクセスします。患者モデルオブジェクトを取得し、このオブジェクトからデータを次のビューコントローラに渡すことができます。

関連する問題