从头开始学习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
}
}
}
答案 0 :(得分:1)
所以你要创建一个
var mySwitch = UISwitch()
一次,但这并没有连接到任何东西,所以当你检查该开关是否打开时,它不起作用。您需要做的是将此变量连接到IBOutlet,就像您在帖子中提到的那样。这样,当您的UISwitch实际切换时,该变量将正确表示交换机的状态。要做到这一点,请执行类似于为Action创建IBOutlet的方法。看起来应该是这样的:
@IBOutlet var mySwitch: UISwitch!
您应该能够通过控制从故事板/ xib中拖动来创建此功能,就像您为操作所做的那样。