2017-04-26 1 views
0

Ich habe drei globale Variablen:Wie setze ich eine Konstante, die außerhalb ihres Gültigkeitsbereichs in einer if-Anweisung verwendet werden soll?

var activeTextField = UITextField() // stores the last textFieldDidBeginEditing 
var activeTextView = UITextView() // stores the last textViewDidBeginEditing 
var lastTextKindIsTextView = true // indicates if the last text used is a UITextView 

Ich möchte die Anzahl der ausgewählten Zeichen des ersten Responder Textfeld oder Textansicht zählen. Ich habe versucht, mit diesem Code, aber es funktioniert nicht, weil ActiveField außerhalb des Geltungsbereichs ist. Gibt es eine Möglichkeit, dies zu tun?

if lastTextKindIsTextView { 
    let activeField = activeTextView 
} else { 
    let activeField = activeTextField 
} 

// see the length of the selected string 
var strLength = 0 

// don't work because activeField is out of scope: 
if let textRange = activeField.selectedTextRange { 
    let selectedText = activeField.text(in: textRange) 
    strLength = (selectedText?.utf16.count)! 
} 

Antwort

2

Deklarieren die Variable vor dem Ausdruck if - else

let activeField : UITextInput 
if lastTextKindIsTextView { 
    activeField = activeTextView 
} else { 
    activeField = activeTextField 
} 

oder ohne if - else

let activeField : UITextInput = lastTextKindIsTextView ? activeTextView : activeTextField 
+0

I Vadian, active und activeTextView variabel sind von zwei verschiedenen Typen. – Cue

+1

Richtig, aber beide Typen entsprechen "UITextInput". Ich habe die Antwort aktualisiert. – vadian

+0

Funktioniert gut, danke! – Cue

Verwandte Themen