2017-04-30 4 views
1

UITextfieldから値を取得しようとしていますが、オプションとして返されています。私はforce unwrappingの方法を提案しようとしましたが、WhateverUserInputHereの代わりにOptional( "WhateverUserInputHere")を受け取ります。私はまた、値を取得する前にテキストフィールドが空でないことを確認する方法を探していました。強制的にアンラッピングするときにクラッシュすることはありません。今のところ、値は、ユーザーがボタンを押して次の画面に移動した後に取得されます。このボタンは、ユーザーがテキストフィールドの編集を開始すると有効になります。しかし、テキストフィールド内のすべてを削除することに決めた場合でも、前進することができます。これを防止する方法はありますか?ユーザーが入力を完了してテキストフィールドが空でないとボタンが有効になっていることを確認しますか?UITextfieldからオプションの強制解除

// Variable used to store value from textfield  
var nametemp:String? 
    var name:String = "" 

    @IBOutlet weak var NameInput: UITextField! 
    @IBOutlet weak var NextButton: UIButton! 
    @IBOutlet weak var TestLabel: UILabel! 


// Enables button when textfield has been edited 
    @IBAction func NameInputEditingDidChange(_ sender: Any) { 
     NextButton.isEnabled = true 
    } 

    // When button is used, value of textfield is retrieved 
    @IBAction func NextButtonVariableTest(_ sender: Any) { 
     nametemp = String(describing: NameInput.text) 
     name = nametemp! 
// Label returns optional value 

TestLabel.text = "Hello" + name 

    } 

} 

答えて

1

単にあなたがString(describing:)を使用するとOptional(...)テキストが文字列の一部ではなく、オプションの文字列になりますし、あなたがすることはできません

self.name = NameInput.text! 

または

self.name = NameInput.text ?? "" 

を使用それを除く。

+0

ありがとうございました!それはまさに私が探していたものです –

関連する問題