当我将@objc 推理更改为关闭时,为什么我的 UIPickerView 项目不显示(在我转换为 Swift 4 的项目中)?
Why won't my UIPickerView items display when I change @objc inference to off (on project I converted to Swift 4)?
这是我的应用 运行 转换为 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 推理关闭:
以前(在 Swift 3.x 和 XCode 的早期版本下),我按以下方式设置了 MainControllerView,并且工作正常:
class MainViewController: UIViewController, UIPickerViewDelegate, UITextFieldDelegate
在@matt 发表评论后,我只是做了一个更改并添加了 UIPickerViewDataSource
,如下所示:
class MainViewController: UIViewController,
UIPickerViewDelegate, UIPickerViewDataSource, UITextFieldDelegate
我重建了 @objc 推理设置为默认(或关闭)和 运行 程序,现在我在 UIPickerView 中看到了预期的项目。
问题解决了。
我想知道这是最近的更改还是之前碰巧有效?
这是我的应用 运行 转换为 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 推理关闭:
以前(在 Swift 3.x 和 XCode 的早期版本下),我按以下方式设置了 MainControllerView,并且工作正常:
class MainViewController: UIViewController, UIPickerViewDelegate, UITextFieldDelegate
在@matt 发表评论后,我只是做了一个更改并添加了 UIPickerViewDataSource
,如下所示:
class MainViewController: UIViewController,
UIPickerViewDelegate, UIPickerViewDataSource, UITextFieldDelegate
我重建了 @objc 推理设置为默认(或关闭)和 运行 程序,现在我在 UIPickerView 中看到了预期的项目。
问题解决了。 我想知道这是最近的更改还是之前碰巧有效?