我试图在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)

您想添加一个包含cellForRowAtfunc的类
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/

10-15 23:50