【问题标题】:reload tableview without hiding keyboard在不隐藏键盘的情况下重新加载 tableview
【发布时间】:2017-05-22 19:22:40
【问题描述】:

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

通过搜索单元的 UITextField 的 addTarget,我有一个函数 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

【问题讨论】:

    标签: swift uitableview swift3


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      使用UISearchBar——这就是它的用途。

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 2012-09-16
          • 2013-03-25
          • 2017-09-20
          • 2012-07-22
          • 1970-01-01
          • 2012-11-15
          • 1970-01-01
          • 2011-09-25
          • 1970-01-01
          相关资源
          最近更新 更多