如何在Swift4中获取另一个类的枚举内容?

时间:2018-05-06 01:55:26

标签: ios swift enums

我想导航到另一个具有选择器视图的视图控制器,但这是通用的,必须根据导航前传递的类型参数选择内容选择视图。此参数是名为tipo

的变量

所以在我的MainViewController中我有一个导航的函数:

@objc func handlerSelectOpTipo(_ sender: UILabel) {
        let vcSelectTipo = self.storyboard?.instantiateViewController(withIdentifier: "ViewControllerSelect") as! ViewControllerSelect
       //  vcSelectTipo.tipo = .entrega // <- Example that I want.
        vcSelectTipo.tipo = 0 // <- ENUM TYPE HERE
        self.present(vcSelectTipo,animated: true,completion: nil)
    }

Picker`s ViewController

class ViewControllerSelect : UIViewController, UIPickerViewDelegate, UIPickerViewDataSource {

    @IBOutlet weak var pickerView: UIPickerView!
    @IBOutlet weak var btOk: UIButton!
    @IBOutlet weak var lblTitulo: UILabel!
    var tipo : Int?
    var conteudo : [String] = []

    override func viewDidLoad() {
        pickerView.setValue(UIColor.white, forKey: "textColor")
        pickerView.dataSource = self
        pickerView.delegate = self
        btOk.addTarget(self, action: #selector(handlerBtOk), for: .touchUpInside)
    }

    @objc func handlerBtOk() {

    }


    func numberOfComponents(in pickerView: UIPickerView) -> Int {
        return 1
    }

    func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
        return conteudo.count
    }

    enum tipoConteudo: Int {
        case tipo
        case entrega
        case priceList
        case campanha
    }
}

我无法访问集合var tipo : Int?

的MainViewController的枚举值

我想要一些像:

vcSelectTipo.tipo = .entrega
vcSelectTipo.tipo = .priceList

但自动填充功能未显示tipoConteudo枚举类型。

2 个答案:

答案 0 :(得分:1)

您需要做的就是改变

var tipo: Int? 

var tipo: tipoConteudo?

你刚才有不正确的tipo类型。

答案 1 :(得分:1)

您已将tipo变量声明为Int而非您的枚举类型。

变化:

var tipo: Int?

为:

var tipo: TipoConteudo?

类型名称应以大写字母开头,因此tipoConteudo应为TipoConteudo