UIPickerView 在模拟器中正常工作,但*看起来*在设备上是空的

UIPickerView works properly in simulator, but *looks* empty on device

我有一个带有 UIPickView 的应用程序,它在模拟器中完美运行,但是当我 运行 设备上的应用程序时,它显示为空。

重要说明:它只是看起来是空的,因为我仍然可以滚动它并且所选项目正在改变。

class ViewController: UIInputViewController, UIPickerViewDelegate, UIPickerViewDataSource {

  override func viewDidLoad() {
    super.viewDidLoad()

    fontPicker.delegate = self
    fontPicker.dataSource = self
    fontPicker.selectRow(0, inComponent: 0, animated: true)
  }

  let fonts: [FontFamily] = [...]

  var currentFont: FontFamily = FontFamily()

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

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

  func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
    fonts[row].title
  }

  func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
    currentFont = fonts[row]
  }

}

请检查您的设备是否开启深色模式...希望能解决问题

最有可能发生的情况是您的文本是白色的,背景也是白色的,所以您的项目就在那里,只是看起来不可见。

您可以尝试覆盖属性标题函数和 return NSAttributedString 并将其 foregroundColor 属性设置为黑色。

或者,您可以覆盖行函数的视图并构造 return 一个按您想要的方式设置样式的 UILabel。

您可以在此处的堆栈溢出或通过快速 Google 搜索找到大量此类示例。