2017-04-26 49 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