2017-09-12 14 views
-1

これは非常に基本的な質問ですが、問題の原因がわかりません。私は単純な "hello world"プログラムを作ろうとしています。プログラムでは、ユーザーがテキストフィールドに入力したいものを入力し、何でも入力します。しかし、何も起こっていないようだと私は私のプッシュ機能が私がそれを期待どおりに正確に働いた理由は不明です。あなたが提供されたコードに基づいてラベルテキストをUITextFieldに入力する文字に変更する

import UIKit 

class ViewController: UIViewController { 
    @IBOutlet var PopUp: UITextField! 
    @IBOutlet weak var HelloWorld: UILabel! 

    @IBAction func Push(_ sender: UIButton) { 
     PopUp.isHidden = false 
     PopUp.text = "hello World" 
    } 

    @IBAction func send(_ sender: UITextField) { 
     HelloWorld.text = sender.text 
    } 
} 
+0

あなたが知る必要がある最初の事は、メソッド、変数名は小文字で始めるべきであるということです手紙。クラス名と構造体名は大文字で始まります。 – rmaddy

+0

'send'アクションにどのようなイベントを接続しましたか? – rmaddy

+1

IBOutletとIBAction関数にはより良い名前を付けるべきです。たとえばUILabelはlblUserEnteredTxtと呼ばれます。たとえば、func PushはbtnMyButtonTouchUpInsideです。たとえば、 –

答えて

0

func sendはそれも発射されているか否かが、私には不明です。 func sendIBActionの場合は_ sender: UITextFieldと表示されるのが奇妙ですが、そうでないかもしれません。

UITextFieldに関連して発生したイベントはありますか? UITextfieldのユーザータイプとしてHelloWorld UILabelを更新しようとしていますか?あなたのUITextFieldで入力されているものは何でもしてあなたのUILabelを更新するには

、あなただけUIButtonタッチアップインサイドIBActionを必要としています。あなたがUITextFieldのユーザータイプとしてUILabelを更新しようとしていない限り、IBAction func sendを完全に削除できると思います。この点について私が正しい場合は、IBActionOutletをストーリーボードから削除してください。

Push funcで指定したコードに基づいて、UILabelにテキストが設定されていません。私はPushUIButtonのタッチアップインサイドIBActionと仮定しています。あなたはfunc Pushに、あなたはこれを試してみて、あなたはHelloWorld UILabelテキストが読み込ま表示されます、イベントの送信者を使用する必要はありません、あなたのHelloWorld UILabelテキストを設定することができます。

@IBAction func Push(_ sender: UIButton) { 

    //PopUp.isHidden = false //why are you doing this? the UITextField PopUp should already be visible if you are typing text into it, so this code is superfluous as the value of PopUp.isHidden is already false 
    HelloWorld.text = PopUp.text 
    PopUp.text = "hello World" 
} 

あなたUILabelディスプレイ持つようにしようとしている場合テキストをUITextFieldに入力するときは、質問を明確にする必要があります。それはあなたがここにあなたのUIViewControllerUITextFieldDelegate

0

を行う必要がありますケースの場合とアプローチの一つの方法である:

override func viewDidLoad() { 
    super.viewDidLoad() 
    PopUp.addTarget(self, action: #selector(textFieldDidChange(_:)), for: .editingChanged) // when textfield is edited this will call 
} 

func textFieldDidChange(_ textField: UITextField) { 
    HelloWorld.text = textField.text 
} 
+0

なぜ 'textField'パラメータを無視しますか?なぜ '' let ''を使うのですか?必要なのは 'HelloWorld.text = textField.text'だけです。 – rmaddy

+0

@rmaddy提案していただきありがとうございました。回答を編集しました –

関連する問題