Ios Swift-UISwitch更改背景颜色-仅工作一次?
从零开始快速学习。为什么我的UISwitch代码在尝试更改UIVIew背景颜色时只工作一次?我看过一些关于IBOutlet的东西,但不知道如何添加。谢谢你的帮助 谢谢Ios Swift-UISwitch更改背景颜色-仅工作一次?,ios,swift,Ios,Swift,从零开始快速学习。为什么我的UISwitch代码在尝试更改UIVIew背景颜色时只工作一次?我看过一些关于IBOutlet的东西,但不知道如何添加。谢谢你的帮助 谢谢 // // ViewController.swift // testChangeBackground // // Created by Paul Balfour on 14/08/2014. // Copyright (c) 2014. All rights reserved. // import UIKit clas
//
// ViewController.swift
// testChangeBackground
//
// Created by Paul Balfour on 14/08/2014.
// Copyright (c) 2014. All rights reserved.
//
import UIKit
class ViewController: UIViewController {
var mySwitch = UISwitch()
@IBAction func mySwitch(sender: UISwitch) {
println("Switched")
changeBackground()
}
func changeBackground() {
if mySwitch.on {
self.view.backgroundColor = UIColor.redColor()
return
}
else
{
self.view.backgroundColor = UIColor.yellowColor()
return
}
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
啊哈。因此,UISwitch也需要成为工作的出口。-我不明白的是为什么一个IB的出口也是如此?(在下面工作)。谢谢 导入UIKit
class ViewController: UIViewController {
@IBAction func mySwitch(sender: UISwitch) {
println("Switched")
changeBackground()
}
@IBOutlet var mySwitch: UISwitch!
func changeBackground() {
if mySwitch.on {
self.view.backgroundColor = UIColor.redColor()
return
}
else
{
self.view.backgroundColor = UIColor.yellowColor()
return
}
}
}那么您正在创建一个
var mySwitch = UISwitch()
一次,但这并没有连接到任何东西,所以当你检查开关是否打开时,它不工作。您需要做的是将这个变量连接到一个IBOutlet,就像您在文章中提到的那样。这样,当实际切换UISwitch时,变量将正确表示开关的状态。要做到这一点,请执行类似于为您的操作创建IBOutlet的操作。它应该是这样的:
@IBOutlet var mySwitch: UISwitch!
您应该能够通过从故事板/xib拖动控件来创建它,就像您对操作所做的那样 太好了。您能解释一下为什么UISwitch在不受影响的情况下也需要使用IBOutlet吗?。谢谢你说没有受到影响是什么意思?您正在切换显示器上开关的状态,因此需要某种方式来收听。IBOutlet让您了解交换机发生了什么,而IBAction在切换时执行操作。现在我再看一遍,另一种方法是将作为“发送者”得到的开关传递给changeBackground方法,因为发送者是正确的UI开关。啊,我明白了。切换开关时,我只是想执行IBAction。没有意识到我也需要听开关。谢谢你的澄清。