首页 > 解决方案 > 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 ?

我真的很感谢你的帮助。

标签: iosswiftenumsxcode9.4

解决方案


您无法访问Numbers,因为嵌套在类中的枚举是static. 您不能通过该类的实例访问静态成员。您可以像这样正常访问它:

secondVC.numberSelected = SecondViewController.Numbers.one

事实上,你可以只写:

secondVC.numberSelected = .one

如果类型languageSelected也是SecondViewController.Numbers,您可以在一行中执行此操作,而无需使用 switch 语句:

secondVC.numberSelected = languageSelected

推荐阅读