2016-05-08 6 views
0

私は過去3時間のスピーディーな学習をしています。私が解決しようとしている問題は次のとおりです。チェックテキストフィールドは別のビューにリダイレクトする前に値を持っています - スウィフト

ユーザーがそのフィールドにデータを入力した場合、ボタンを押した後に次のページに移動できるようにします。テキストフィールドが空白の場合、エラーメッセージが表示されます。 、単純な権利のようですか?このボタンを押して、私はプッシュセグメソッドを作成したので、一度クリックするとビュー1からビュー2になります。今は、テキストフィールドが空であるかどうかをチェックするためにこの関数を条件付けました。リダイレクトしますが、ボタンをクリックするとエラーメッセージが表示されますが、まだリダイレクトされていますか?これは私の現在のコードです:

@IBOutlet var txtfield1: UITextField! 
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 

    if txtfield1.text.isEmpty 
    { 
     nameLabel.text = "error don't redirect" 
    } 
    else{ 

     let newVC: SecondViewController = segue.destinationViewController as! SecondViewController 

     let passedPhrase = "redirect to new controller/view" 

     newVC.receivedPhrase = passedPhrase 

    } 
} 

これはどうして起こっているのですか?

答えて

2

あなたのコードは正しいですが、この機能を無効にする必要がありますshouldPerformSegueWithIdentifier。あなたのテキストは

override func shouldPerformSegueWithIdentifier(identifier: String?,sender: AnyObject?) -> Bool { 

    if txtfield1.text.isEmpty { 
     return false 
    } 
    return true 
} 
+0

おかげで空であるかどうかをチェックする必要がありそうなので、あなたが私を提供しているこの機能は、それが私の元々の質問で指定された私の現在の機能を置き換えるのでしょうか? –

+0

上記のコードは正しいですが、performSegueを実行するかどうかを確認するには、これを追加する必要があります。それが動作します。 – Khuong

+0

ありがとうございました。 –

0

prepareForSegue空の場合performSegueWithIdentifierを防ぐために、これを使用する必要が

はセグエが実行されようとしているビューコントローラに通知します。

shouldPerformSegueWithIdentifierを使用すると、指定した識別子のセグを実行する必要があるかどうかを判断できます。

テキストは応答のためのshouldPerformSegueWithIdentifier

override func shouldPerformSegueWithIdentifier(identifier: String,sender: AnyObject?) -> Bool { 

    if txtfield1.text.isEmpty { 
     return false 
     print("empty") 
    } else{ 
     return true 
    } 
} 
関連する問題