使用单个按钮 Xcode 或 swift 切换视图控制器的背景颜色

Posted

技术标签:

【中文标题】使用单个按钮 Xcode 或 swift 切换视图控制器的背景颜色【英文标题】:Switching the background color of view controller using a single button Xcode or swift 【发布时间】:2020-05-08 14:57:06 【问题描述】:

该程序设计为在按下按钮时让屏幕在黑白之间切换。问题是这应该通过按钮而不是开关来完成。这段代码有什么问题?当我运行程序时,背景不会切换。有关如何解决此问题的任何建议?

import UIKit

class ViewController: UIViewController 

    override func viewDidLoad() 
        super.viewDidLoad()
        // Do any additional setup after loading the view.
       // set the background color to white when opened
        backgroundView.backgroundColor = .white
    

    @IBOutlet weak var OnOffButton: UIButton!
    @IBOutlet var backgroundView: UIView!
    @IBAction func OnOff(_ sender: AnyObject) 
        // write your code here
        // code should change background color to black if it is white and vice versa. 
        if backgroundView.backgroundColor == .white 
            backgroundView.backgroundColor = .black
         else 
            backgroundView.backgroundColor = .white
        

    


【问题讨论】:

您是否检查了那些 IBOutlet 和 IBAction 是否正确连接到情节提要? 我相信是这样,但我该如何检查 只需从情节提要中删除连接并重新连接(控制+鼠标拖动)。 颜色比较是一个非常糟糕的主意。删除 if backgroundView.backgroundColor == .white 并维护一个 Bool 并检查并切换它。事实的来源应该是您的数据状态,而不是界面的某些瞬时质量。 【参考方案1】:

我刚刚创建了一个全新的单视图 ios 应用,它运行良好。

在新项目中,我在情节提要的第一个场景中添加了一个 UIButton 并将其连接到 OnOff:

注意:顺便说一下,您不应该以大写字母开头函数。应该是onOff:。使用重构来改变这一点。

然后我将一个 UIView 拖到那个场景,右键单击视图并添加一个 New Referencing Outlet,从右侧的 + 拖动到左侧的 View Controller 文本并将其分配给 backgroundView

第一次尝试就完美运行。您可能错误地连接了 IBOutlet 或 IBAction。在OnOff: 函数中添加一个断点,看看当你点击按钮时它是否被触发。如果是,请通过在控制台中输入以下内容来确保 backgroundView 的 IBOutlet 已正确连接:

po self.backgroundView

如果是nil,那么它没有正确连接到 UIView。

祝你好运!

【讨论】:

以上是关于使用单个按钮 Xcode 或 swift 切换视图控制器的背景颜色的主要内容,如果未能解决你的问题,请参考以下文章

xcode swift - 无法编辑后退按钮

视图控制器上的 Xcode / Swift 后退按钮

在一个视图控制器中使用不同的按钮上传多个图像(iOS、Xcode 9、Swift 4)

我需要帮助使用 Swift 在视图控制器中创建两个单选按钮

Swift:Xcode 6.1.1 更改由代码块执行而不是按钮触发的视图

在swift3中按下按钮时如何以编程方式执行segue或呈现视图