Swift - 改变背景颜色的UISwitch - 只运行一次?

时间:2014-08-14 17:59:02

标签: ios swift

从头开始学习Swift。为什么我的UISwitch代码在尝试更改UIVIew背景颜色时只能使用一次?我见过关于IBOutlet的一些内容,但不知道如何添加。任何帮助表示赞赏。

由于

//
//  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也需要成为工作的出路。 - 我不明白为什么还有IBOutlet? (在下面工作)。感谢

导入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
    }
}

}

1 个答案:

答案 0 :(得分:1)

所以你要创建一个

var mySwitch = UISwitch()

一次,但这并没有连接到任何东西,所以当你检查该开关是否打开时,它不起作用。您需要做的是将此变量连接到IBOutlet,就像您在帖子中提到的那样。这样,当您的UISwitch实际切换时,该变量将正确表示交换机的状态。要做到这一点,请执行类似于为Action创建IBOutlet的方法。看起来应该是这样的:

    @IBOutlet var mySwitch: UISwitch!

您应该能够通过控制从故事板/ xib中拖动来创建此功能,就像您为操作所做的那样。