2017-04-26 48 views
0

我有三個全局變量:如何設置一個常量在if語句的範圍之外使用?

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 

我想算第一個響應的文本字段或文本視圖中選定的字符數。我嘗試了這段代碼,但它不工作,因爲activeField超出了範圍。有沒有辦法做到這一點?

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)! 
} 

回答

2

if - else表達

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

或之前聲明變量,而不if - else

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

我vadian,activeTextField和activeTextView兩種不同類型的變量。 – Cue

+1

正確,但兩種類型都符合'UITextInput'。我更新了答案。 – vadian

+0

工作正常,謝謝! – Cue