Как получить содержимое enum другого класса в Swift4? - PullRequest
0 голосов
/ 06 мая 2018

Я хочу перейти к другому контроллеру представления, у которого есть представление выбора, но это универсально, представление выбора контента должно быть выбрано в соответствии с параметром типа, переданным перед навигацией. Этот параметр является переменной с именем 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
    }
}

Я не могу получить доступ к значениям перечисления MainViewController для набора var tipo : Int?

Я хочу что-то вроде:

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

но автозаполнение не показывает tipoConteudo тип перечисления.

Ответы [ 2 ]

0 голосов
/ 06 мая 2018

Вы объявили переменную tipo как Int вместо типа enum.

Изменение:

var tipo: Int?

до:

var tipo: TipoConteudo?

И имена типов должны начинаться с заглавных букв, поэтому tipoConteudo должно быть TipoConteudo.

0 голосов
/ 06 мая 2018

Все, что вам нужно сделать, это изменить

var tipo: Int? 

до

var tipo: tipoConteudo?

У вас просто неправильный тип для типо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...