2017-11-07 2 views
0

私はビューコントローラのテキストフィールドからprepareForSegue経由で2番目のビューコントローラのラベルにテキストを渡そうとしていますが、動作しません。prepareForSegueはSwift 4のデータを渡しません

私のコード今のところ:

class ViewController: UIViewController { 
    @IBOutlet weak var inputTextField: UITextField! 

    // use of override func prepare gives an error 
    func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 

     var DestViewController: secondViewController = segue.destination as! secondViewController 
     DestViewController.labelText = inputTextField.text! 
    } 
} 

class SecondViewController: UIViewController { 
    @IBOutlet weak var receivedTextLabel: UILabel! 

    var labelText = "ss" 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     receivedTextLabel.text! = labelText 
    } 
} 

私はprepareForSegueためoverrideを使用している場合は、私は次のエラーを取得:上書きせずに

Method does not override any method from it's superclass

を、それが構築しますが、ボタンからセグエを行った後、 SecondViewControllerに変更すると、ラベルのテキストは更新されません。

+0

ストーリーボードで任意のセグのアクションを使用してボタンを接続しましたか?ストーリーボードで2番目のViewControllerへの正しいナビゲーションを提供する場合、最初のViewControllerからアクションを削除できます。 –

答えて

3

スウィフト3で方法がprepareForSegue(segue:sender)からprepare(for:sender:)に戻った。

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

関数の前に 'override'を張って、Xcodeがスーパークラスの何かをオーバーライドしないと言うなら、クラス名の空行にメソッド名の先頭を再入力してみてください。 'override'と' func'をスキップしてください。それはあなたの正しい名前を記入するためにオートコンプリートを得るはずです(正しいものに絞り込むためにかなりの量の名前を入力しなければならないかもしれませんが)。 (もしXcodeがオートコンプリートをやっていないところでやっていたら、終了して再起動してみてください) – theMikeSwan

+1

@theMikeSwan良い点ですが、このコメントはこの質問の方が適切だと思います。 – the4kman

+0

あなたは私にそれを打つ。 (投票しました)自動補完を使うことに加えて、Xcodeヘルプシステムのメソッド名を調べるべきです。 –

関連する問題