2017-06-09 7 views
0

ユーザーがテキストフィールドにテキストを入力してから次のView Controllerに移動するホームビューからかなり簡単に移行したいと思います。私は関数を実装しましたtextFieldShouldReturn(textField:UITextField) - > Bool segueを実行しようとしましたが、目的の結果が得られませんでした。ここで コードtextFieldから別のView Controllerに切り替えることができませんでした。

class LogInVC: UIViewController { 
    @IBOutlet weak var logInLabel: UILabel! 
    @IBOutlet weak var logInField: UITextField! 

    override func viewDidLoad() { 
     NSLog("LogIn view loaded, setting delegate") 

     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 
    } 

    override func viewDidAppear(_ animated: Bool) { 
     NSLog("viewWillAppear: Performing possible queued updates") 
     textFieldShouldReturn(textField: logInField)    
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
     guard let autoCheckInVC = segue.destination as? 
      AutocheckInVC else { 
      preconditionFailure("Wrong destination type: \(segue.destination)") 
     } 

     guard logInField.text != nil else { 
      preconditionFailure("Text property should not be nil") 
     } 

    } 

    func textFieldShouldReturn(textField: UITextField) -> Bool { 
     self.performSegue(withIdentifier: "AutoCheckInVC", sender: self) 
     return true 
    } 
} 

の一部だこれをデバッグするための任意のクイックヘルプはとてもいただければ幸いです。私はかなりの時間をこれを修正しようとしたが、私は道を見つけていない!

+0

、セグエまたは次にあなたのテキストフィールドからデータを渡しますテキストフィールド? –

+0

私がしたいと思っていたように、セグが動作していません!私はtextFieldまたは同等のものから渡すデータを保存しようとしていません – Goldie

+0

また、私はなぜ理由がわからない** textFieldShouldReturn(textField:logInField) ** "このメソッドへの呼び出しの結果は未使用 "です。 – Goldie

答えて

1

あなたはあなたのコード内のいくつかのエラーがあります:

  • logInField.delegate = self、あなたがUITextFieldDelegateを継承し、あなたのtextFieldのデリゲートを設定する必要がtextFieldShouldReturnを呼び出すことができるようにするにviewDidAppearからドント・コールtextFieldShouldReturn

    1. メソッドの最新の構文を使用してくださいtextFieldShouldReturn
    2. あなたはこのメソッドへの呼び出しの結果はですそれはあなたがdelegates

    があなたの代わりにこのコードを試してみたことがないので、呼ばれなかったので、をnused:

    What'sが動作しない
    class LogInVC: UIViewController, UITextFieldDelegate { 
        @IBOutlet weak var logInLabel: UILabel! 
        @IBOutlet weak var logInField: UITextField! 
    
        override func viewDidLoad() { 
         NSLog("LogIn view loaded, setting delegate") 
    
         super.viewDidLoad() 
         // Do any additional setup after loading the view, typically from a nib. 
    
         logInField.delegate = self 
        } 
    
        override func viewDidAppear(_ animated: Bool) { 
         NSLog("viewWillAppear: Performing possible queued updates") 
        } 
    
        override func didReceiveMemoryWarning() { 
         super.didReceiveMemoryWarning() 
         // Dispose of any resources that can be recreated. 
        } 
    
        override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
         guard let autoCheckInVC = segue.destination as? 
          ViewController else { 
           preconditionFailure("Wrong destination type: \(segue.destination)") 
         } 
    
         guard logInField.text != nil else { 
          preconditionFailure("Text property should not be nil") 
         } 
    
        } 
    
        func textFieldShouldReturn(_ textField: UITextField) -> Bool { 
         self.performSegue(withIdentifier: "AutoCheckInVC", sender: self) 
         return true 
        } 
    } 
    
  • +0

    素晴らしい説明と、代理人をインポートすることの重要性を指摘してくれてありがとう。また、関数 'textFieldShouldReturn'の中でsegueがすでに実行されているので、' prepare(for segue:UIStoryboardSegue、sender:Any?) '関数は必要ないと思います。 – Goldie

    +0

    @Goldie npあなたを助けてうれしい。あなたのプロジェクトに幸運。 –

    +0

    実際には、私はもう一度この問題を遭遇しています。この問題は、実際には 'LogInVC'を 'AutoCheckInVC'に移行することです。私は 'self.performSegue(withIdentifier:" AutoCheckInVC "、sender:self)'を呼び出すときに、このfunc 'textFieldShouldReturn()'の中に何か問題があるかどうかを調べます。それは重要なので、修正のための任意の提案? – Goldie

    関連する問題