设置变量的值不断变化
Value of setting variable keeps changing
我正在尝试创建一个多语言应用程序。有一个 UISegmented 控制栏,其中包含三种语言的 3 个段。我已经创建了将保存值的语言变量(英语 - 0,粤语 - 1,普通话 - 2)。我的问题是,在模拟器中,当我更改选定的段控件时,即使每个段都应将变量更改为特定变量,语言变量也会随机更改。
谁能告诉我我做错了什么?
class About: UIViewController {
var language: Int?
@IBOutlet weak var selectLanguage: UISegmentedControl!
@IBOutlet weak var whatIsiEd: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
func checkLanguage() -> Int? {
return language
}
@IBAction func setLanguage(sender: AnyObject) {
if self.selectLanguage.selectedSegmentIndex == 0 {
println("Language is set to English - \(language) - \(self.selectLanguage.selectedSegmentIndex)")
language = 0
} else if self.selectLanguage.selectedSegmentIndex == 1 {
println("Language is set to Traditional Chinese - \(language) - \(self.selectLanguage.selectedSegmentIndex)")
language = 1
} else if self.selectLanguage.selectedSegmentIndex == 2 {
println("Language is set to Simplified Chinese - \(language) - \(self.selectLanguage.selectedSegmentIndex)")
language = 2
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
当我默认使用模拟器时,段控制器设置为英语(段 0)。然后我更改为段 1,然后是 2,然后回到 1,最后是 0。日志报告如下:
语言设置为繁体中文 - 无 - 1
语言设置为简体中文 - 可选(1) - 2
语言设置为繁体中文 - 可选(2) - 1
语言设置为英语 - 可选 (1) - 0
从评论中发现。您只是在为 language
分配正确的值之前记录它。在这种情况下,如果你只是交换 language
的赋值和打印语句你应该是好的:
@IBAction func setLanguage(sender: AnyObject) {
if self.selectLanguage.selectedSegmentIndex == 0 {
// Assignment
language = 0
// Then print. Now your result will be correct.
println("Language is set to English - \(language) - \(self.selectLanguage.selectedSegmentIndex)")
} else if ...
}
我正在尝试创建一个多语言应用程序。有一个 UISegmented 控制栏,其中包含三种语言的 3 个段。我已经创建了将保存值的语言变量(英语 - 0,粤语 - 1,普通话 - 2)。我的问题是,在模拟器中,当我更改选定的段控件时,即使每个段都应将变量更改为特定变量,语言变量也会随机更改。
谁能告诉我我做错了什么?
class About: UIViewController {
var language: Int?
@IBOutlet weak var selectLanguage: UISegmentedControl!
@IBOutlet weak var whatIsiEd: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
func checkLanguage() -> Int? {
return language
}
@IBAction func setLanguage(sender: AnyObject) {
if self.selectLanguage.selectedSegmentIndex == 0 {
println("Language is set to English - \(language) - \(self.selectLanguage.selectedSegmentIndex)")
language = 0
} else if self.selectLanguage.selectedSegmentIndex == 1 {
println("Language is set to Traditional Chinese - \(language) - \(self.selectLanguage.selectedSegmentIndex)")
language = 1
} else if self.selectLanguage.selectedSegmentIndex == 2 {
println("Language is set to Simplified Chinese - \(language) - \(self.selectLanguage.selectedSegmentIndex)")
language = 2
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
当我默认使用模拟器时,段控制器设置为英语(段 0)。然后我更改为段 1,然后是 2,然后回到 1,最后是 0。日志报告如下:
语言设置为繁体中文 - 无 - 1
语言设置为简体中文 - 可选(1) - 2
语言设置为繁体中文 - 可选(2) - 1
语言设置为英语 - 可选 (1) - 0
从评论中发现。您只是在为 language
分配正确的值之前记录它。在这种情况下,如果你只是交换 language
的赋值和打印语句你应该是好的:
@IBAction func setLanguage(sender: AnyObject) {
if self.selectLanguage.selectedSegmentIndex == 0 {
// Assignment
language = 0
// Then print. Now your result will be correct.
println("Language is set to English - \(language) - \(self.selectLanguage.selectedSegmentIndex)")
} else if ...
}