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

Posted

技术标签:

【中文标题】UIPickerView 在模拟器中正常工作,但在设备上*看起来*为空【英文标题】:UIPickerView works properly in simulator, but *looks* empty on device 【发布时间】:2020-05-22 02:54:34 【问题描述】:

我有一个带有 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]
  


【问题讨论】:

请提供代码示例 更改您的设备主题。 【参考方案1】:

请检查您的设备暗模式是打开还是关闭...希望能解决问题

【讨论】:

【参考方案2】:

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

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

或者,您可以覆盖行函数的视图,并按照您想要的方式构造和返回 UILabel 样式。

您可以在堆栈溢出或通过 Google 快速搜索找到这些示例。

【讨论】:

以上是关于UIPickerView 在模拟器中正常工作,但在设备上*看起来*为空的主要内容,如果未能解决你的问题,请参考以下文章

PhoneGap App 在模拟器上工作,但在 iPhone 设备上不能正常工作

UIButton 在第一次运行时工作正常,但在模拟器上第二次运行时不起作用

UIPickerView 的 ViewController 在选择后冻结

确定 Cordova 无法在 iOs 9 中启动但在 iOs 10 中正常工作的原因

将图像添加到 M MessageView 控制器在 IOS5 中可以正常工作,但在 IOS 6 中不能

设备上的 WebRequest (AFNetworking) 时 TableView 无响应,但在模拟器中正常 + MagicalRecord 问题