重新加载tableview而不隐藏键盘

时间:2017-05-22 19:22:41

标签: swift uitableview swift3

我有一个自定义表格视图单元格,它是我的表格视图中的第一个单元格,其中我有一个文本字段,我试图让函数像搜索功能一样。 我希望表视图的其余部分中的数据在用户输入时更新。我通过.addTarget设置搜索单元格的textField以触发EditingChanged,因此每次用户在textField中输入新内容时,它都会显示更新的结果。但似乎调用self.tableView.reloadData()会在每个字母后触发EditingDidEnd并隐藏键盘。

通过addTarget到搜索单元的UITextField,我有一个函数searchBarEditingChanged(searchTextField: UITextField)self.tableView.reloadData()之后我调用了searchTextField.becomeFirstResponder()

我怎样才能解决这个问题?

我之前正在考虑使用搜索控制器,但我不喜欢你必须下拉才能使搜索栏可见

编辑:

尝试使用此代替

    let sectionsToReload = IndexSet(1...sectionHeaders.count)
    self.tableView.reloadSections(sectionsToReload, with: .none)

但它在reloadSections上崩溃:2017-05-22 15:37:21.600257 MYAPP[565:89501] *** Assertion failure in -[UITableView _endCellAnimationsWithContext:], /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit/UIKit-3600.6.22/UITableView.m:1284

3 个答案:

答案 0 :(得分:2)

将文本字段和结果保存在两个不同的部分,仅在搜索重新加载结果部分。这应该工作

答案 1 :(得分:0)

UITextFieldDelegate方法中的view.endEditing(false)。

答案 2 :(得分:0)

使用gridExtra Wiki - 这就是它的用途。