【问题标题】:Downpicker not appearing in UITableViewUITableView 中没有出现 Downpicker
【发布时间】:2017-06-30 19:05:59
【问题描述】:

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

然后它显示文本字段。但是,如果我如上所示添加 DownPicker:

cell.contentView.addSubview(dp)

我什么都没有显示,只是一个空的 tableview。任何帮助理解为什么不显示 DownPicker 将不胜感激。谢谢。

【问题讨论】:

    标签: objective-c swift xcode uitableview


    【解决方案1】:

    您需要将您的UITextField 和您的DownPicker 添加到View。如果它类似于UIPickerView,那么您的DownPicker 只会在您选择UITextField 时显示。您还需要将DownPicker 添加到view 而不是cell

    view.addSubView(dp)
    

    编辑

    “它需要您的代码中已经存在的任何 UITextField(包括添加到情节提要的那些):” - https://github.com/Darkseal/DownPicker

    编辑 2

    通过查看文档,您想要做的是通过在 cellForRowAt func 中执行以下操作,将自己添加为 DataPicker 上的观察者

    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,但希望永远不会出现这种情况并添加检查以确保它存在。

    【讨论】:

    • 哈利,谢谢,就是这样!它们(UITextField 和 DownPicker)都必须添加到子视图中。
    • Harry,你知道如何快速处理 DownPicker 上的更改事件吗?无法使用 UIControlEventValueChanged 从上面的链接中弄清楚。
    • 感谢 Harry 的成功!将 dp_selected 设置为:func dp_selected(_ dp: DownPicker) { let selectedValue = dp.text }
    猜你喜欢
    • 2012-04-01
    • 2018-10-26
    • 2017-01-18
    • 1970-01-01
    • 1970-01-01
    • 2012-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多