2016-10-18 10 views
0

私はあなたがそれをタップするテーブルビューのセルにいくつかのテキストを持っています。あなたはセルの名前を渡すでしょうし、別のビューにプッシュされます。他のviewControllerに値を渡すことはできませんか?

 override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
    tableView.deselectRow(at: indexPath as IndexPath, animated: true) 

    let row = indexPath.row 
    valueToPass = sections[row] 
    print(valueToPass) 
} 


override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 

    if (segue.identifier == "fromWelcomeToSectionPage") { 
     // initialize new view controller and cast it as your view controller 
     let vc:sectionPage = segue.destination as! sectionPage 
     vc.passedValue = valueToPass 

    } 
} 

も私はこれは私がそれを渡そうとする方法である

if passedValue == "Základy" { 
     print("it works") 
    } 

を確認するために別のコントローラでコードを作成しました。変数valueToPassはグローバル変数です。私はdidSelectRowAtIndexPathでそれを印刷していますが、それはokeyですが、準備中ではありません。ので、私は別のビューに

var passedValue = String() 
+2

'valueToPass = vc.passedValue'また' vc.passedValue = valueToPass' – dan

+0

する必要があり、あなたのテーブルビューデリゲートメソッドは古いスウィフトバージョンからのシグネチャを使用しており、あなたの準備メソッドはSwift 3シグネチャを使用しています。彼らはどちらも呼ばれていますか? – dan

+0

[View Controller間でデータを受け渡しする]の複製があります。(http://stackoverflow.com/questions/5210535/passing-data-between-view-controllers) –

答えて

1

を変数を作成してみましょう

オプションの値をアンラップしながら、セルをタップした後、私は予想外にnilを見つけ持っているあなたのprepareForSegue方法がdidSelectRowAtメソッドの前に呼び出され、 didSelectRowのロジックを信頼してデータを渡すことはできません。

あなたはprepareForSegueで選択された行を取得し、データを取得するためにそこにそれを使用して一緒にそれを渡すことができます:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 

    if (segue.identifier == "fromWelcomeToSectionPage") { 
     // initialize new view controller and cast it as your view controller 
     let vc = segue.destination as! sectionPage 
     let selectedRow = tableView.indexPathForSelectedRow!.row 
     vc.passedValue = sections[selectedRow] 
    } 
} 
+0

ありがとう:)作品 – patrikbelis

関連する問題