本示例使用搜索控制器来过滤表视图控制器中的单元格。搜索栏位于表格视图的标题视图内部。表格视图的内容以与搜索栏相同的高度偏移,因此首先隐藏了搜索栏。向上滚动超过表格视图的顶部边缘时,将显示搜索栏。然后,当搜索栏变为活动状态时,它会隐藏导航栏。
将UITableViewController嵌入到UINavigationController中,以获取UINavigationItem(包含导航栏)。然后将我们的自定义ViewController类设置为继承自UITableViewController并采用UISearchResultsUpdating协议。
class ViewController: UITableViewController, UISearchResultsUpdating { let entries = [(title: "Easiest", image: "green_circle"), (title: "Intermediate", image: "blue_square"), (title: "Advanced", image: "black_diamond"), (title: "Expert Only", image: "double_black_diamond")] // 一个空的元组,将使用搜索结果进行更新。 var searchResults : [(title: String, image: String)] = [] let searchController = UISearchController(searchResultsController: nil) override func viewDidLoad() { super.viewDidLoad() searchController.searchResultsUpdater= self self.definesPresentationContext= true // 将搜索栏放置在表格视图的标题中。 self.tableView.tableHeaderView = searchController.searchBar // 将内容偏移设置为搜索栏高度的高度 // 在首次显示视图时将其隐藏。 self.tableView.contentOffset = CGPoint(x: 0, y: searchController.searchBar.frame.height) } func filterContent(for searchText: String) { // 使用匹配项更新searchResults数组 // 在我们基于标题值的条目中。 searchResults = entries.filter({ (title: String, image: String) -> Bool in let match = title.range(of: searchText, options: .caseInsensitive) // 如果范围包含匹配项,则返回元组。 return match != nil }) } // 标记:-UISearchResultsUpdating方法 func updateSearchResults(for searchController: UISearchController) { // 如果搜索栏包含文本,请使用字符串过滤数据 if let searchText = searchController.searchBar.text { filterContent(for: searchText) // 用搜索结果数据重新加载表视图。 tableView.reloadData() } } // 标记:-UITableViewController方法 override func numberOfSections(in tableView: UITableView) -> Int { return 1 } override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { // 如果搜索栏处于活动状态,请使用searchResults数据。 returnsearchController.isActive?searchResults.count: entries.count } override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { // 如果搜索栏处于活动状态,请使用searchResults数据。 let entry =searchController.isActive? searchResults[indexPath.row] : entries[indexPath.row] let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) cell.textLabel?.text = entry.title cell.imageView?.image = UIImage(named: entry.image) return cell } }
如何更改iOS 15中开始出现的节标题上方的额外填充?
我有一个标题,占据了整个屏幕。 每次应用程序进入后台,然后回到前台/活动,我希望屏幕被设置回标题顶部。 我只见过与滚动到表格顶部有关的答案,这些答案使用类似于,但是不起作用,因为它只滚动回UITableView的第0行0,而不是UITableView标题的顶部。 有什么想法吗? 谢谢 编辑:尝试了这个 下面是一些值得注意的表格设置代码:
是否有可能获得所有符合搜索条件(如投票数、语言、发行年份等)的标题的IMDb ID? 我的首要任务是编制一份清单,列出所有被归类为故事片的IMDb身份证,并有超过25,000张选票(也就是那些有资格的人出现在前250名名单上)。在发布这篇文章时,有4296部电影符合这一标准。 (如果您不熟悉IMDb ID:它是与数据库中的每个电影/人物/角色/等相关联的唯一7位数代码。例如,对于电影Drive(2
搜寻 可输入关键词并于网络间搜寻,且会显示搜寻结果网页。搜寻履历会保存至以下其中一个位置: - Memory Stick™ - 主机内存 1. 选择(网络)的(网上搜寻)。 若要将搜寻履历保存至Memory Stick™,需先将Memory Stick™正确插入PSP™内 。 2. 选择(新搜寻)。 画面上会显示键盘。 3. 输入想搜寻的关键词,再选择〔确定〕。 与网络联机,并显示搜寻
我正在研究具有动态单元格高度的表视图。 由于我的要求,我必须展示40种不同的cell.Each细胞是不同的。 例如。 一个单元有2个标签,一个图像视图另一个单元只有2个图像视图,另一个单元格有5个标签,1个文本视图,2个按钮,2个图像查看 我的问题是我无法静态定义高度。每个单元格中的.labels和textview都基于运行时的文本。因此,根据各个元素,我需要调整高度。所以我根据下面的编码计算了标
如何自我调整uItableview单元格元素。 自动调整UITableViewCell大小。