我正在尝试在一个黑海豹捕猎者中使用UITableView。我正在编程地添加一个UITextField,然后按如下方式添加Downpicker:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
{
var textField = UITextField()
let cell = UITableViewCell(style: .default, reuseIdentifier: nil)
cell.selectionStyle = .none
textField.text = "TEST"
textField.frame = CGRect(x: CGFloat(0), y: CGFloat(0), width: CGFloat(170), height: CGFloat(30))
var dp: DownPicker!
let test1 = ["test one", "test two"]
dp = DownPicker(textField: textField, withData: test1)
cell.contentView.addSubview(dp)
return cell
}
如果我只是添加textfield:
cell.contentView.addSubview(textField)
然后显示文本字段。但是,如果如上面所示添加DownPicker:
cell.contentView.addSubview(dp)
我什么也没看到,只是一个空的桌面视图。任何帮助理解为什么不显示DownPicker将不胜感激。谢谢。
发布于 2017-06-30 11:10:09
您需要将您的UITextField
和DownPicker
添加到View
中。如果它与UIPickerView
类似,那么您的DownPicker
只会在选择UITextField
时显示。另外,您需要将DownPicker
添加到view
,而不是cell
。
view.addSubView(dp)
编辑
“它使用代码中已经存在的任何UITextField (包括添加到童话板中的代码):”- https://github.com/Darkseal/DownPicker
编辑2
通过查看文档,您想要做的是在DataPicker上添加自己为观察者,在cellForRowAt
func
中执行以下操作
dp.addTarget(self, action: #selector(dp_selected(sender:)), for: .valueChanged)
您想要在类中添加一个func
,其中包含cellForRowAt
func
func dp_selected(sender: AnyObject) {
guard let dp = sender as? DropDown else { return }
if let textfield = dp.getTextField() as? UITextField {
guard let indexPath = tableView.indexPath(for: textfield.superview) else { return }
}
}
此函数将检查发送方是否为DropDown
类类型,如果它将尝试获取它所附加的UITextField
,如果返回该类型,则将尝试获取正在使用它的IndexPath
--如果该单元格在屏幕上不再可见,则可以是nil
,但希望永远不会出现这种情况,并添加检查以确保其存在。
https://stackoverflow.com/questions/44853310
复制相似问题