我试图在UITableView中使用Darkseal Downpicker。我正在按程序添加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
}
如果我只是添加文本字段:
cell.contentView.addSubview(textField)
然后显示文本字段。但是,如果我添加下选择器,如上图所示:
cell.contentView.addSubview(dp)
我什么也没有显示,只是一个空的桌面视图。如果您能帮助您理解为什么没有显示下选择器,我们将不胜感激。谢谢。
最佳答案
您需要将urUITextField
和urDownPicker
添加到View
中。如果它与UIPickerView
类似,则只有当您选择DownPicker
时,您的UITextField
才会显示。此外,您还需要将DownPicker
添加到view
而不是cell
。
view.addSubView(dp)
编辑
“它接受代码中已经存在的任何UITextField(包括添加到脚本中的UITextField):”-https://github.com/Darkseal/DownPicker
编辑2
在查看文档时,您要做的是在
dp.addTarget(self, action: #selector(dp_selected(sender:)), for: .valueChanged)
您想添加一个包含
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 }
}
}
此函数将检查发送方是否为
func
类类型,如果它试图获取它附加到的cellForRowAt
,如果返回,它将尝试获取在此处使用它的func
,如果单元格在屏幕上不再可见,但希望永远不会出现这种情况,并添加了检查以确保它存在.关于objective-c - Downpicker未出现在UITableView中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44853310/