如何在 swift3 中使用 tableview 和 searchbarcontroller 创建范围搜索

2023-11-30

大家好,我们使用 tableview 和 serchbarcontroller 设计了范围搜索。为了实现这一点,使用了下面的代码,但不知何故它没有返回我实际的输出。希望得到帮助。谢谢。

output :

这是我输出的屏幕截图

code :

import UIKit

class SearchBookVC: UIViewController, UITableViewDelegate, UITableViewDataSource, UISearchResultsUpdating, UISearchBarDelegate {

@IBOutlet weak var tableview: UITableView!

struct Books  {
    var name = String()
    var board = String()
    var classname = String()
    var area = String()
    var city = String()
    }

    var books = [Books(name: "Physics", board: "CBSE",classname:"XI",area:"Karnataka",city:"Bangalore"),
                 Books(name:"English",board:"CBSE",classname:"X",area:"Maharashtra",city:"pune"),
                 Books(name:"biology",board:"IB",classname:"XII",area:"Gujarat",city:"Rajkot"),

                 Books(name:"chemistry",board:"IB",classname:"X",area:"Gujarat",city:"Ahmedabad"),

                 Books(name:"Maths",board:"ICSE",classname:"IX",area:"Maharashtra",city:"Mumbai"),
                 Books(name:"Science",board:"ICSE",classname:"XII",area:"Karnataka",city:"Mysore")
                 ]
    var filteredBooks = [Books]()

    let searchController = UISearchController(searchResultsController: nil)



    override func viewDidLoad() {
    super.viewDidLoad()

      filteredBooks = books

       searchController.searchResultsUpdater = self
       searchController.dimsBackgroundDuringPresentation = false
       definesPresentationContext = true
       tableview.tableHeaderView = searchController.searchBar

       searchController.searchBar.scopeButtonTitles = ["All","Name", "Board", "Class", "Area","City"]

       searchController.searchBar.delegate = self

       self.tableview.register(mycell.self, forCellReuseIdentifier: "cell")


    // Do any additional setup after loading the view.
}

func applySearch(searchText: String, scope: String = "All") {


    if searchController.searchBar.text! == ""
    {
        filteredBooks = books.filter { book in
            let nameofbook = ( scope == "All") || (book.name == scope) || (book.board == scope) || (book.classname == scope) || (book.area == scope) || (book.city == scope)
            return nameofbook
    }
    }
        else
        {
            filteredBooks = books.filter { book in
                let nameofbook = ( scope == "All") || (book.name == scope) || (book.board == scope) || (book.classname == scope) || (book.area == scope) || (book.city == scope)
                return nameofbook && book.name.lowercased().contains(searchText.lowercased()) && book.board.lowercased().contains(searchText.lowercased()) && book.classname.lowercased().contains(searchText.lowercased()) && book.area.lowercased().contains(searchText.lowercased()) && book.city.lowercased().contains(searchText.lowercased())
            }
        }
    self.tableview.reloadData()
}
func updateSearchResults(for searchController: UISearchController) {

     let searchBar = searchController.searchBar
    let selectedScope = searchBar.scopeButtonTitles![searchBar.selectedScopeButtonIndex]
    applySearch(searchText: searchController.searchBar.text!,scope: selectedScope)
}
func searchBar(_ searchBar: UISearchBar, selectedScopeButtonIndexDidChange selectedScope: Int) {
    applySearch(searchText: searchController.searchBar.text!,scope: searchBar.scopeButtonTitles![selectedScope])
}



func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return self.filteredBooks.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell  {
    let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! mycell

    cell.bookname?.text = self.filteredBooks[indexPath.row].name
    cell.Boardname?.text = self.filteredBooks[indexPath.row].board
    cell.classtitle?.text = self.filteredBooks[indexPath.row].classname

    return cell
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    print("Row \(indexPath.row) selected")
}

}

你能尝试一下这样吗:

  1. 创建一组自动完成文本字段,每个数据源对应一个。
  2. 首先让这些文本字段不可见。
  3. 选择值并单击搜索按钮后,使相应的文本字段可见。

不确定是否能满足您的要求,如有问题请留言。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 swift3 中使用 tableview 和 searchbarcontroller 创建范围搜索 的相关文章

  • 在 Swift 3 中单击和双击 UITableViewCell

    我在 TableView Cell 上有故事板 segue 我用它来在单元格单击中传输到另一个 VCdidSelectRowAt方法 现在我双击了TapGestureRecognizer处理手机上的点击问题 问题是 单击时 segue 正在
  • 检测 UITableView 中的水平平移

    我正在使用 UIPanGestureRecognizer 来识别 UITableView 中的水平滑动 准确地说是在单元格上 尽管它已添加到表格本身 然而 这个手势识别器显然窃取了桌子上的触摸 我已经让 pangesturerecogniz
  • 删除部分(红色删除按钮),UITableViewController - iOS

    我正在尝试做一个分组的 uitableview 并且我已经激活了编辑选项 我希望用户也能够删除整个部分 而不仅仅是特定行 因此 当您单击 编辑 时 每个表格单元格左侧显示的红色减号按钮也应该显示在各个部分 部分标题左侧 有人知道如何做到这一
  • iOS SWIFT - WebRTC 从前置摄像头更改为后置摄像头

    WebRTC 视频默认使用前置摄像头 效果很好 但是 我需要将其切换到后置摄像头 但我无法找到任何代码来执行此操作 我需要编辑哪一部分 是 localView 或 localVideoTrack 还是捕获器 斯威夫特3 0 对等连接只能有一
  • UITableViewCell的detailTextLabel滚动时消失

    我正在使用一个字符串数组 我在其中设置detailTextLabel从 最初所有字幕都设置正确 但如果我滚动detailTextLabel消失 UITableViewCell tableView UITableView tableView
  • 搜索栏与节标题视图重叠

    我将搜索栏放在 tableHeaderView 内 在 iphone 6 上一切正常 但在 iphone 5s 上我得到这个奇怪的结果 override func viewDidLoad super viewDidLoad tableVie
  • Swift 3:绘制矩形

    我刚接触 swift 三天 我正在尝试弄清楚如何绘制矩形 我对这门语言太陌生 不知道要扩展的类和要重写的方法 并且我四处寻找示例代码 但似乎没有任何效果 我将其归因于我对 swift 3 的使用 我现在正在尝试的是 import UIKit
  • 如何将 AdMob 广告添加到 UITableView

    我正在尝试将 AdMob 广告添加到表格视图中 我希望它出现在每 10 个单元格中 例如 如果您有 Reddit 应用程序的免费版本 就像它一样 我尝试遵循 AdMob 文档 但没有任何运气 而且我确信我遗漏了一些东西 任何人都可以阐明一种
  • Swift 3 Web 视图

    所以我刚刚更新到新的Xcode8 and Swift3但现在我的网络视图不起作用 这是我使用的代码 UIWebView loadRequest webView NSURLRequest URL NSURL string http hardw
  • Swift 3 中的 _ArrayType 去了哪里?

    我有一些用于中继的代码 ArrayType在 Swift 3 之前 我试图了解公共协议发生了什么 ArrayType 任何想法 ArrayType被重命名 ArrayProtocol 您可以在ArrayType swift https gi
  • 使用deleteRowsAtIndexPaths后indexPath未更新

    我创建了一个方法 当用户想要删除单元格时更新我的 UITableView void removeMoreFriendsRow NSNotification notification NSDictionary d notification u
  • iOS应用程序启动黑屏,UINavigationController,Nib,RootViewController

    我有以下应用程序 其RootViewController被命名TopicsViewController 当我运行它时 没有任何错误或中断 但屏幕是black 没有桌子 无论是有人的还是空的 只有黑屏 不确定发生了以下哪一种情况 我的申请有问
  • iPhone - dequeueReusableCellWithIdentifier 用法

    我正在开发一个 iPhone 应用程序 它有一个相当大的 UITableView 其中的数据来自网络 所以我正在尝试优化它的创建和使用 我发现dequeueReusableCellWithIdentifier非常有用 但是在看到很多使用它的
  • 如何从 Firebase 获取名称以特定字符串开头的记录?

    如何查询 Firebase 以返回名称以特定字符串开头的子项 我正在尝试将 Firebase 与此一起使用自动完成文本字段项目 https github com mnbayan AutocompleteTextfieldSwift 他们使用
  • 如何用动画隐藏/显示 UISearchBar 范围栏?

    我想在表格为空时 在搜索栏第一次编辑之前 不显示范围栏 在编辑时不显示范围栏 最后在编辑完成时显示它 我了解 UISearchBarDelegate 协议 但我不知道如何用动画显示 隐藏范围栏 我知道 UISearchBar 有setSho
  • 使用 DatePicker 展开和折叠 UITableViewCells

    我正在构建一个应用程序 让用户从 UITableView 中选择日期 tableView 是静态且分组的 我浏览了很多问题 包括this one https stackoverflow com questions 18973573 ios
  • iOS 中tableview 的动态搜索

    I ve a tableview和我实现搜索方法的文本字段 现在 当我在其中写入一些值时textfield然后点击搜索按钮 然后在tableview 但是 我希望它是动态的 意味着我开始输入的那一刻textfield它应该开始搜索而不点击任
  • UITableView 中的 moveRowAtIndexPath 导致动画不正确

    我有一个简单的 UITableView 控制器 显示 CoreData 我正在尝试实现 void tableView UITableView tableView moveRowAtIndexPath NSIndexPath fromInde
  • 显示键盘时 Admob 广告不会出现在 UITableView 页脚中

    我用它在 UITableView 的页脚上显示 Admob 广告 UIView tableView UITableView tableView viewForFooterInSection NSInteger section GADBann
  • iOS、Swift 3 - 当我从详细视图返回后单击“取消”时,UISearchBar 消失

    我在containerView中有一个tableView 以编程方式向其添加一个搜索栏 一切工作正常 除了这种情况 当我点击一个单元格时 当 tableView 由 searchBar 过滤时 然后我从明细视图返回 通过推送转场呈现 然后我

随机推荐

  • JOptionPane 标题栏图标

    我想替换 JOptionPane 标题栏中的图标 因为它当前显示默认的 Java 咖啡徽标 我尝试了以下方法 JOptionPane showMessageDialog null Some Text Login JOptionPane IN
  • Visual Basic 命令行编译器已停止工作

    昨天 我可以毫无问题地使用 Visual Studio 2010 然而 今天当我打开计算机并尝试再次在VS2010上打开我的项目 带有Visual Basic NET的Web应用程序 时 我收到一个消息框 如下所示 后来 我在尝试删除 su
  • iOS - 将时间和日期转换为用户时区

    我正在网络服务器上发送一些请求 该服务器会回复我时间和日期 如下所示 at 18 58 of 05 08 2012 我可以弄清楚如何获取 2 个 NSStrings 18 58 05 08 2012 中的时间和日期 请注意 服务器的时区是
  • 动态加载现有组件 Angular 2 Final Release

    我正在尝试在最终版本 2 0 0 中动态加载组件 使用 RC5 我使用以下代码进行加载 创建一个指令来加载控件 import CheckboxComponent CheckboxListComponent DatePickerCompone
  • 在没有 Date 对象的情况下在 Javascript 中操作日期

    看来我无法使用 javascript Date 对象 因为当您使用日期字符串初始化时 它本质上默认为美国日期 无法将任何文化信息传递给日期对象 IE 无论客户端的区域设置是什么 如果客户端区域设置是英国 var d new Date 08
  • 在 Chrome 中加载页面时,如何捕获所有网络请求和完整响应数据?

    使用 Puppeteer 我想在 Chrome 中加载 URL 并捕获以下信息 请求网址 请求标头 请求发布数据 响应标头文本 包括重复的标头 例如set cookie 传输的响应大小 即压缩大小 完整响应体 捕获完整的响应主体是给我带来问
  • 支持 O(1) 随机访问和最坏情况 O(1) 附加的数据结构?

    我实现了一个可调整大小的索引集合 它使用数组来存储其元素 例如List
  • 在 Windows Powershell 中复制文件夹时出现意外结构

    我有一组项目 其中包含项目特定文件和通用文件的混合 我正在尝试将两个不同文件夹 一个特定于项目的文件夹和一个公共文件夹 中的内容复制到以该项目命名的单个文件夹中 我还想保留原始文件夹中的所有文件夹层次结构 例如一些常用文件的路径 src C
  • 使用非托管磁盘创建 Azure VM

    我试图通过 PowerShell 创建具有非托管磁盘的 Azure VM因为 Azure 政府尚不支持托管磁盘 没有任何一个文档我可以找到 PowerShell VM 创建引用托管或非托管磁盘 默认值似乎是托管磁盘 我的 VM 创建失败并出
  • 基于监视器宽度的元素大小

    我正在创建自己的个人网站 以测试我迄今为止在 HTML 和 JavaScript 方面所学到的知识 我制作了工具栏 它在宽度相当大的显示器上看起来很漂亮 我将工具栏内容放在中间 我尝试在较小的显示器上访问它 工具栏中的元素相互重叠 因为我根
  • WebBrowser 导航功能不起作用并且未调用处理程序

    代码如下 我正在尝试导航到网站并阅读信息 问题是导航不起作用 唯一被调用的事件是导航并且打印的 Url 为空 其他事件从未被调用 我缺少什么 我必须使用 Form 类才能导航吗 我不能从控制台应用程序以编程方式使用它吗 请帮忙 class
  • 具有多个命名空间的 python lxml findall

    我正在尝试使用 lxml 解析具有多个命名空间的 XML 文档 但我一直坚持让 findall 方法返回某些内容 My XML
  • Ruby 动态命名数组

    我想遍历多个数组 并想从名称数组中动态命名它们 像这样的东西 替换name与来自的元素names array names a b c names each name name array1 name array2 name array 0
  • 将完整切片范围作为参数传递

    考虑下面的代码 我看到一些使用这种格式的代码v for 将完整切片 不是其中的一部分 作为参数传递 有什么区别吗v and v 或者这只是开发人员的偏好 我在下面所做的测试表明没有任何区别 我错过了什么吗 package main impo
  • 如何使用 facebook ios sdk for iphone 实现单点登录 (SSO)

    我在我的应用程序中使用最新的 facebook ios sdk 为了实现 SSO Facebook 表示 修改应用程序的主 AppDelegate 类 如下所示 BOOL application UIApplication applicat
  • c++、pthread 和静态回调。 “this”返回一个指向派生类的基类 inctead 的指针(第 2 部分)

    该线程已启动here但由于缺乏一个完全好的例子 并且为了避免删除所有该问题 它在这里被重写 因此 在下面的示例中 void cppthread ThreadedFunc 生成并作为单独的线程执行 相反我更喜欢void ThreadedWri
  • Android 上电池放电的剩余时间

    我正在寻找一个代码来估计 猜测 Android 手机电池完全放电之前剩余的时间 我的搜索结果充满了可用的应用程序 而且常见的评论是计算它几乎没有用 不过我需要代码 任何帮助 即使是一个粗略的片段 都可以帮助您入门 您无法准确猜测电池还剩多少
  • 我们能看到C++编译器实例化的模板吗?

    有没有办法查看 C 中函数模板或类模板的编译器实例化代码 假设我有以下代码 template
  • 检查数组中的唯一值和非唯一值

    我们希望获得包含完整信息的结果 例如 Unique Value1 Value2 重复 值1 我们有一个数组 下面提到了一个示例数组 array1 array John Wilkins Poul Warner Rodger Smith Dav
  • 如何在 swift3 中使用 tableview 和 searchbarcontroller 创建范围搜索

    大家好 我们使用 tableview 和 serchbarcontroller 设计了范围搜索 为了实现这一点 使用了下面的代码 但不知何故它没有返回我实际的输出 希望得到帮助 谢谢 output 这是我输出的屏幕截图 code impor