我有两个视图控制器(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吗?
非常感谢您的帮助。
答案 0 :(得分:2)
您无法访问Numbers
,因为嵌套在类中的枚举是static
。您不能通过该类的实例访问静态成员。您通常可以这样访问它:
secondVC.numberSelected = SecondViewController.Numbers.one
实际上,您可以编写:
secondVC.numberSelected = .one
如果languageSelected
的类型也为SecondViewController.Numbers
,则可以在一行中执行此操作,而无需使用switch语句:
secondVC.numberSelected = languageSelected
答案 1 :(得分:0)
在任何其他类(如常量类)中创建枚举,并且要在哪个类中使用枚举,只需创建该枚举的对象并与该对象一起使用。