【发布时间】:2018-01-22 19:27:59
【问题描述】:
我对 Swift 和一般编码仍然很陌生,我正在尝试为用户创建某种选项来更改彩色主题。
但我对如何访问 swift 文件中的 switch 语句(或如何封装)以及如何访问 set 变量一无所知?
到目前为止,我让用户在设置视图控制器中选择一个主题,并且主题的名称保存在 UserDefaults 中的“主题”键中。
在名为 theme.swift 的文件中,我创建了一个 switch 语句来检查名称。显然,每种情况都可以设置我在 switch 语句上方声明的几个变量。
但我收到“不允许在顶层声明”的错误?
我该如何解决这个问题? 我可以做些什么来让 switch 语句在每次呈现视图控制器时运行以检查正确的颜色,或者在选择新主题并设置变量后让它运行?我了解错误消息,但我不知道如何解决此问题。
例如,到目前为止我是这样设置themes.swift文件的:
import UIKit
var theme = UserDefaults.standard.string(forKey: "themes")
var background: UIColor?
var labelColor: UIColor?
var buttonColor: UIColor?
switch theme {
case "Red":
background = UIColor(named: "darkRed")
labelColor = UIColor(named: "labelRed")
buttonColor = UIColor(named: "buttonRed")
case "Blue":
background = UIColor(named: "darkBlue")
labelColor = UIColor(named: "labelBlue")
buttonColor = UIColor(named: "buttonBlue")
default:
return
}
那么我怎样才能访问这些变量呢?
除了顶级错误之外,我是否可以像通常那样访问变量,因为它们是全局变量?
例如。 startButton.setTitleColor(buttonColor, for: .normal)?
【问题讨论】:
-
代码需要在函数中。
-
请阅读错误信息。很清楚。
-
正如 maddy 所说,switch 语句是必须在函数中才能执行的代码。这可能是您深入研究枚举的好时机。您可以在这里声明一个主题的枚举,然后添加派生值(枚举中内置的函数)以返回主题属性。
标签: swift switch-statement toplevel