ios - Swift:从另一个 viewController 类访问枚举
问题描述
我有两个视图控制器(A 和 B)。在主视图控制器(A)中,我试图设置一个变量,可能的值是枚举。以下代码在第二个 viewcontroller(B) 中
代码:
enum Numbers: String {
case one = "One"
case two = "two"
case three = "three"
}
var numberSelected: Numbers? = .one
我正在尝试加载第二个 ViewController(B) 并根据主视图控制器中的选择设置 numberSelected 值:
func loadSecondoViewController() {
let storyBoard = self.storyboard?.instantiateViewController(withIdentifier: "ColorsViewController")
guard let secondVC = storyBoard as? SecondViewController else {return}
secondVC.modalTransitionStyle = UIModalTransitionStyle.flipHorizontal
switch languageSelected {
case .one:
secondVC.numberSelected = secondVC.
self.present(secondVC, animated: true, completion: nil)
}
在这条线上:
secondVC.numberSelected = secondVC.
我无法访问数字(枚举)。
任何人都知道我们如何从主视图控制器中设置 numberSelected ?
我真的很感谢你的帮助。
解决方案
您无法访问Numbers
,因为嵌套在类中的枚举是static
. 您不能通过该类的实例访问静态成员。您可以像这样正常访问它:
secondVC.numberSelected = SecondViewController.Numbers.one
事实上,你可以只写:
secondVC.numberSelected = .one
如果类型languageSelected
也是SecondViewController.Numbers
,您可以在一行中执行此操作,而无需使用 switch 语句:
secondVC.numberSelected = languageSelected
推荐阅读
- python - 为什么 Python 会有这样的行为?初学者尝试编写刽子手游戏
- sql-server - 在where条件下执行选择查询
- swift - SCNPhysicsVehicle SCNPhysicsVehicleWheel Road 问题
- .htaccess - 301重定向多级目录
- c++ - Function pointer assignment cause error after creating DLL
- project-reactor - 为什么 Thread.sleep() 会触发订阅 Flux.interval()?
- javascript - 如何在浏览器中不加载页面的情况下执行 aspx 页面(页面加载时的 JavaScript 函数)
- python - BFS 在 Python 3 中的性能,两种实现,非常不同的执行时间
- paypal - 点对点支付处理的当前最佳实践/选项
- node.js - Sqlite3通过节点子进程execSync导入文件命令无效