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

간단하게 사용

self.name = NameInput.text! 

또는

self.name = NameInput.text ?? "" 

당신이 Optional(...) 텍스트가 문자열의 일부가 아닌 선택적 문자열을 받고 할 수 없습니다 String(describing:)를 사용하면

그것을 제거하십시오.

+0

감사합니다. 그게 정확히 내가 찾고 있던거야. –