Почему мои элементы UIPickerView не отображаются, когда я отключаю вывод @objc (в проекте, который я конвертировал в Swift 4)? - PullRequest
0 голосов
/ 26 ноября 2018

Вот частичный снимок моего приложения, запущенного после его преобразования в Swift 4.2 (из 3.x).Вы можете видеть, что элементы в моем UIPickerView действительно отображаются правильно.

CYaPass UIPickerView

Однако, если я обновлю проект и изменим вывод объекта на off (вместо включения) - XCode предлагает изменить эту настройку - тогда мой UIPickerView не отображает элементы, хотя они содержатся в списке.

set objc inference to off

Снимок UIPickerView, который кажется пустым

Вот приложение, показывающее, что выглядит как пустой UIPickerView, но, как вы можете видеть, я выбрал Удалить элемент.Однако за ним вы можете видеть, что UIPickerView кажется пустым.

UIPickerView seems to be empty, but is not

Вот базовый код, который загружает элементы в UIPickerView

public func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int{
    if (siteKeyPickerValues != nil){
        return siteKeyPickerValues.count
    }
    return 0
}

public func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String?{
    if (siteKeyPickerValues != nil && siteKeyPickerValues.count > 0){
        return siteKeyPickerValues[row]
    }
    return nil
}

siteKeyPickerValues ​​(String Array) инициализирован

siteKeyPickerValues, похоже, тоже правильно инициализируется.Здесь он работает в режиме отладки с отключенной функцией @objc: siteKeyPickerValues has values

1 Ответ

0 голосов
/ 26 ноября 2018

Ранее (в Swift 3.x и предыдущих версиях XCode) у меня был настроен MainControllerView следующим образом, и он работал нормально:

class MainViewController: UIViewController, UIPickerViewDelegate, UITextFieldDelegate

После комментария от @matt я простовнес одно изменение и добавил UIPickerViewDataSource, как показано ниже:

class MainViewController: UIViewController, 
UIPickerViewDelegate, UIPickerViewDataSource, UITextFieldDelegate

Я перестроил с параметром @objc, установленным на значение по умолчанию (или выключено), и запустил программу, и теперь я вижу ожидаемые элементы в UIPickerView.

uipickerview displays items

Это решает проблему.Интересно, это недавнее изменение или только что сработало раньше?

...