【问题标题】:How to dismiss UISearchController after didSelectRow?在 didSelectRow 之后如何关闭 UISearchController?
【发布时间】:2016-10-05 12:26:16
【问题描述】:

我有两个 UITableViewController,第一个用于显示表格视图数据,第二个用于处理过滤后的搜索。

我遇到的问题是在我过滤结果的第二个 UITableViewController 上,当我点击单元格以转到另一个控制器时,顶部的 UISearchBar 和键盘仍然存在。

这不会发生在第一个 TableViewController 上。

这是我的故事板,右下方的 TableViewController 处理过滤后的结果。

这是我转场后的视觉效果:

【问题讨论】:

    标签: ios objective-c uinavigationcontroller uitabbarcontroller uisearchbar


    【解决方案1】:
    self.searchController.dismiss(animated: true, completion: nil)
    

    在 didSelectRow 中应该没问题

    【讨论】:

      【解决方案2】:

      下面的代码可能会有所帮助:

      在 searchBar 委托方法中关闭键盘,例如,

      - (void)searchBarTextDidEndEditing:(UISearchBar *)searchBar {
          [searchBar resignFirstResponder];
      }
      

      在 DidSelectRow 方法中编写以下代码:

      [searchBar resignFirstResponder];
      

      你也可以在 DidSelectRow 方法中写[self.view endEditing:YES]

      编辑:

      在 DidSelectRow 方法中编写以下代码:

      [[(AppDelegate *)[[UIApplication sharedApplication] delegate] window] endEditing:YES];
      

      【讨论】:

      • 唯一的是,控制器中没有 searchBar 的出口。这是我创建 UISearchController 所遵循的链接:jhof.me/simple-uisearchcontroller-implementation
      • 尝试,[self.view endEditing:YES] 在 DidSelectRow 方法中,正如我在 answer@farhan 中提到的那样
      • 仍然呆在那里。
      • 出现错误:“使用未声明的标识符 'AppDelegate'
      • 'AppDelegate' 是你的 AppDelegate 类名@farhan
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多