Swift:从另一个viewController类访问一个枚举

时间:2018-08-08 01:24:18

标签: ios swift enums xcode9.4

我有两个视图控制器(A和B)。在主视图控制器(A)中,我试图设置一个变量,并且可能的值是枚举。以下代码是第二个viewcontroller(B)

代码:

enum Numbers: String {
    case one = "One"
    case two = "two"
    case three = "three"
}

var numberSelected: Numbers? = .one

我试图加载第二个ViewController(B)并根据在主viewController中的选择设置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.

我无法访问数字(枚举)。

任何人都知道如何从主ViewController中设置numberSelected吗?

非常感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

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

secondVC.numberSelected = SecondViewController.Numbers.one

实际上,您可以编写:

secondVC.numberSelected = .one

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

secondVC.numberSelected = languageSelected

答案 1 :(得分:0)

在任何其他类(如常量类)中创建枚举,并且要在哪个类中使用枚举,只需创建该枚举的对象并与该对象一起使用。