【发布时间】:2018-11-26 00:36:12
【问题描述】:
这是我的应用程序在转换为 Swift 4.2(来自 3.x)后运行的部分快照。您可以看到我的 UIPickerView 中的项目确实正确显示。
但是,如果我更新项目并将 objc 推断更改为关闭(而不是打开)——XCode 建议更改此设置——然后我的 UIPickerView 不会显示这些项目,尽管它们包含在列表中。
UIPickerView 的快照似乎是空的
这是正在运行的应用程序,它显示了一个空的 UIPickerView,但正如您所见,我已选择删除一个项目。但是,在它后面你可以看到 UIPickerView 似乎是空的。
这是在 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(字符串数组)已初始化
siteKeyPickerValues 似乎也已正确初始化。这里它在调试模式下运行,@objc inferenece 关闭:
【问题讨论】:
-
"并将 objc 推断更改为关闭(而不是打开)" 您应该将其更改为默认值,并且您应该确保您的视图控制器明确采用 UIPickerViewDataSource 和 UIPickerViewDelegate。
-
是的,我确实将它更改为默认值,但这会导致同样的问题,我认为它正在将其设置为关闭(在 Swift 4 构建下),所以我只是这样写了这个问题。关键是除非明确设置为 on,否则它会失败。
标签: swift uipickerview inference