2016-10-06 2 views
1

私は迅速に学習しています。2.新しいView Controllerにタップされているセル(UITableView)のデータを渡そうとしています。しかし、私は常にコードライン "destination!.label.text = valueToPass"のための "unexpectedly found nil while unwrapping an Optional value"のエラーを取得します。
以下は私のコードです。
私はそれを解決するために何をすべきか分かりますか?私は何時間も過ごしましたが、まだそれに固執しています。これによりエラー:オプション値をアンラッピングしている間にnilが見つかりました。新しいコントローラにデータを渡している間

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    let indexPath = tableView.indexPathForSelectedRow; 
    let Mycell = tableView.cellForRowAtIndexPath(indexPath!) as UITableViewCell!; 

    valueToPass = (Mycell.textLabel?.text)! 
    performSegueWithIdentifier("webNext", sender: self) 

     print("\(indexPath!.row)") 

     print(valueToPass) 

    } 

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
     if (segue.identifier == "webNext") { 
     let destination = segue.destinationViewController as? web___ViewController 
     destination!.label.text = valueToPass 
    } 

} 
+0

''先は、問題を引き起こしています。あなたは 'destination' ViewControllerを持っていません。 'let destination = segue.destinationViewController as if 'を試してみてください。 web___ViewController {} '。そのブロックの中で 'destination'は' nil'にならないでしょう –

+1

*学習*のための2つの提案:1)命名規則を利用する - 変数とメソッド/関数は小文字で始まり、クラス、構造体、列挙型は大文字で始まります手紙とアンダースコアなし。 2)**決して**テーブルビューのセル(ビュー)からデータを取得し、データソース配列(モデル)から取得しない – vadian

答えて

3

destination!.label.text = valueToPassは、あなたはすでにそれが描かれたり提示される前であっても、ラベルのテキストを設定しています。

データを次のビューに渡し、そのデータをviewDidLoadに表示するために、変数を使用します。

let destination = segue.destinationViewController as? web___ViewController 

destination!.strValue = valueToPass 

Web_VC:!

var strValue:String? 

func viewDidLoad(){ 
    super.viewDidLoad() 

    label.text = strValue! 
} 
+0

理由と詳細なコードを教えていただきありがとうございます。できます! –

関連する問題