- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在我的表格 View 中添加一个搜索栏,其中填充了来自 Core Data 的数据。下面是我的 TableViewController 的部分代码。在 tableview 上放置一个搜索栏功能后如何开始实现?
let managedObjectContext =
(UIApplication.sharedApplication().delegate
as! AppDelegate).managedObjectContext
var fetchedLastName = [String]()
var fetchedFirstName = [String]()
var fetchedImage = [UIImage]()
override func viewDidLoad() {
super.viewDidLoad()
NSNotificationCenter.defaultCenter().addObserver(self, selector: "reloadData:",name:"load", object: nil)
let entityDescription =
NSEntityDescription.entityForName("Faculty",
inManagedObjectContext: managedObjectContext)
let request = NSFetchRequest()
request.entity = entityDescription
do{
let objects = try managedObjectContext.executeFetchRequest(request)
let results = objects
if results.count > 0 {
for var i = 0; i < results.count; i += 1{
let match = results[i] as! NSManagedObject
fetchedLastName.append((match.valueForKey("lastname") as? String)!)
fetchedFirstName.append((match.valueForKey("firstname") as? String)!)
let image = match.valueForKey("image") as! NSData
fetchedImage.append(UIImage(data: image)!)
}
} else {
}
}
catch{}
}
func reloadData(notification: NSNotification){
fetchedLastName.removeAll()
fetchedFirstName.removeAll()
fetchedImage.removeAll()
let entityDescription =
NSEntityDescription.entityForName("Faculty",
inManagedObjectContext: managedObjectContext)
let request = NSFetchRequest()
request.entity = entityDescription
do{
let objects = try managedObjectContext.executeFetchRequest(request)
let results = objects
if results.count > 0 {
for var i = 0; i < results.count; i += 1{
let match = results[i] as! NSManagedObject
fetchedLastName.append((match.valueForKey("lastname") as? String)!)
fetchedFirstName.append((match.valueForKey("firstname") as? String)!)
let image = match.valueForKey("image") as! NSData
fetchedImage.append(UIImage(data: image)!)
}
} else {
}
}
catch{}
self.tableView.reloadData()
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("TEACH", forIndexPath: indexPath) as! TEACHTableViewCell
let row = indexPath.row
print(fetchedFirstName)
cell.facultyName.text = fetchedLastName[row] + ", " + fetchedFirstName[row]
cell.facultyImage.image = fetchedImage[row]
return cell
}
}
最佳答案
试试这个代码所有测试:
//
// TEACHTableViewController.swift
// TEACH
//
// Created by ICST340.N1 on 9/29/15.
// Copyright © 2015 IyoTugs. All rights reserved.
//
import UIKit
import CoreData
class TEACHTableViewController: UITableViewController, UISearchBarDelegate, UISearchControllerDelegate, UISearchResultsUpdating {
var searchController = UISearchController()
var filteredTableData = [[String: AnyObject?]]()
var tableData = [[String: AnyObject?]]()
let managedObjectContext =
(UIApplication.sharedApplication().delegate
as! AppDelegate).managedObjectContext
var fetchedLastName = [String]()
var fetchedFirstName = [String]()
var fetchedImage = [UIImage]()
override func viewDidLoad() {
super.viewDidLoad()
//setup search controller
searchController = UISearchController(searchResultsController: nil)
searchController.searchResultsUpdater = self
searchController.dimsBackgroundDuringPresentation = false
searchController.delegate = self
tableView.tableHeaderView = searchController.searchBar
definesPresentationContext = true
searchController.searchBar.sizeToFit()
NSNotificationCenter.defaultCenter().addObserver(self, selector: "reloadData:",name:"load", object: nil)
let entityDescription =
NSEntityDescription.entityForName("Faculty",
inManagedObjectContext: managedObjectContext)
let request = NSFetchRequest()
request.entity = entityDescription
do{
let objects = try managedObjectContext.executeFetchRequest(request)
let results = objects
if results.count > 0 {
for var i = 0; i < results.count; i += 1{
let match = results[i] as! NSManagedObject
fetchedLastName.append((match.valueForKey("lastname") as? String)!)
fetchedFirstName.append((match.valueForKey("firstname") as? String)!)
//added this is convert the image
let image = match.valueForKey("image") as! NSData
let realImage = UIImage(data: image)!
fetchedImage.append(UIImage(data: image)!)
tableData.append(["firstName" : match.valueForKey("firstname"), "lastName" : match.valueForKey("firstname"), "image" : realImage])
}
} else {
}
}
catch{}
// Uncomment the following line to preserve selection between presentations
// self.clearsSelectionOnViewWillAppear = false
// Uncomment the following line to display an Edit button in the navigation bar for this view controller.
// self.navigationItem.rightBarButtonItem = self.editButtonItem()
}
func reloadData(notification: NSNotification){
fetchedLastName.removeAll()
fetchedFirstName.removeAll()
//Added this to remove all images
fetchedImage.removeAll()
tableData.removeAll()
let entityDescription =
NSEntityDescription.entityForName("Faculty",
inManagedObjectContext: managedObjectContext)
let request = NSFetchRequest()
request.entity = entityDescription
do{
let objects = try managedObjectContext.executeFetchRequest(request)
let results = objects
if results.count > 0 {
for var i = 0; i < results.count; i += 1{
let match = results[i] as! NSManagedObject
fetchedLastName.append((match.valueForKey("lastname") as? String)!)
fetchedFirstName.append((match.valueForKey("firstname") as? String)!)
//added this is convert the image
let image = match.valueForKey("image") as! NSData
let realImage = UIImage(data: image)!
fetchedImage.append(UIImage(data: image)!)
tableData.append(["firstName" : match.valueForKey("firstname"), "lastName" : match.valueForKey("firstname"), "image" : realImage])
}
} else {
}
}
catch{}
self.tableView.reloadData()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
// MARK: - Table view data source
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
// #warning Incomplete implementation, return the number of sections
return 1
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// #warning Incomplete implementation, return the number of rows
if searchController.active {
return filteredTableData.count
} else {
return fetchedLastName.count
}
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("TEACH", forIndexPath: indexPath) as! TEACHTableViewCell
if searchController.active {
let row = indexPath.row
print(fetchedFirstName)
let firstName = filteredTableData[row]["firstName"] as! String
let lastName = filteredTableData[row]["lastName"] as! String
let image = filteredTableData[row]["image"] as! UIImage
cell.facultyName.text = lastName + ", " + firstName
cell.facultyImage.image = image
} else {
let row = indexPath.row
print(fetchedFirstName)
cell.facultyName.text = fetchedLastName[row] + ", " + fetchedFirstName[row]
cell.facultyImage.image = fetchedImage[row]
}
return cell
}
func filterContentForSearchText(searchText: String) {
for singleTableData in tableData {
let firstname = singleTableData["firstName"] as! String
let lastname = singleTableData["lastName"] as! String
let image = singleTableData["image"] as! UIImage
print(firstname)
print(lastname)
if searchText != "" {
if (firstname.rangeOfString(searchText) != nil) {
filteredTableData.append(["firstName" : firstname, "lastName" : lastname, "image" : image])
} else if (lastname.rangeOfString(searchText) != nil) {
filteredTableData.append(["firstName" : firstname, "lastName" : lastname, "image" : image])
}
} else {
filteredTableData.append(["firstName" : firstname, "lastName" : lastname, "image" : image])
}
}
}
func updateSearchResultsForSearchController(searchController: UISearchController) {
filteredTableData.removeAll()
filterContentForSearchText(searchController.searchBar.text!)
tableView.reloadData()
}
关于ios - 在 TableView 上添加 SearchBar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32994181/
我的 SearchFragment 是另外两个 Fragment 的宿主 Fragment:SearchUsersFragment 和 SearchEventsFragment。我的组织方式是 Tab
tableView.tableHeaderView = UISearchDisplayController.searchBar;并调用 setContentInset: ; 当我滚动表格时,没有绘制
我一直在努力寻找答案,但也许我没有正确地询问谷歌,所以它是这样的:我的 Android 应用程序中有一个搜索 View ,其中有顶部菜单项作为搜索输入,等等。我点击放大镜,然后文本字段变为可编辑的搜索
我已经设置了 UISearchBar 的东西。但我收到错误消息。 Cannot assign value of type '[cellData]' to type '[String]' 这是代码 st
我正在疯狂地尝试让我的 IOS 搜索栏在 Iphone 上工作。我从远程服务器访问数据并填充内容文件。然后我做了一个过滤器,它创建了一个过滤后的内容文件。然后我执行 [self.tableView r
我有一个 tableView,其中填充了一个 String 类型的数组。字符串中的某些单词包含连字符 (-)。我知道我可以过滤一个 tableView 并在需要时让它删除这个字符。是否可以在搜索过程中
我有一个带有 SegmentedControl、UITableView 和 UISearchController 的 UIViewController。 SegmentedControl 位于主视图的
当我像这样将 searchBar 对象调用到 UISearchBar 委托(delegate)方法中时,它工作正常: -(void)searchBarSearchButtonClicked:(UISe
我的 SearchBar 有这段代码可以更改我的收藏 View : extension ProductsCollectionViewController : UISearchControllerDel
只是一些后见之明,让您了解我的问题。我目前正在为我在设备上保存了 GuestList CoreData 的事件编写 iOS 应用程序。 在 viewDidLoad 上,它会获取 coredata 对象
我正在按照本教程了解如何启动和运行 searchBar。 教程: https://www.raywenderlich.com/113772/uisearchcontroller-tutorial 我完
我正在尝试对我的应用实现搜索。以前看了好几个教程,都推荐把Search Bar放到Table Header: self.tableView.tableHeaderView = self.searchC
我的搜索栏有默认的灰色文本,但我希望它是白色文本。我无法弄清楚如何使用 swift 来更改范围栏文本颜色,而且您无法从 Storyboard 中执行此操作。我找到的最接近的是 searchBarOut
我刚刚在我的程序中添加了一个 ui 搜索栏,每次我重新运行该程序时,我都会收到错误消息 -[一般] 与守护程序的连接无效尽管如此,我的应用程序仍能完美运行,而且我似乎无法分辨出哪里出了问题。 有谁知道
我又会显得很傻了,但这总比发疯好!这是我的问题。我有一个 UISearchBar,其中有一个我想隐藏的scopeBar。我这样做: searchBar.showsScopeBar = NO; 我也调用
需要帮助来更正此代码。 我有一个带有餐厅名称和地址的核心数据应用程序,有一个搜索栏,它正在运行。我要添加的是一个 Index 和一个 IndexTitle,如下图(箭头)所示。 非常欢迎任何帮助。提前
我正在使用 SearchDisplayController 并希望将样式或色调应用于 searchBar。 但我注意到 SearchDisplayController 更改了我的 searchBar
我当前使用searchBar,我将左侧图标更改为自定义 UIImageView。当按下按钮时我想将其改回原来的搜索图标。 //my custom search iconBar searchBar.se
我在我的电视应用程序中使用自定义搜索屏幕,我的问题是我无法在启动 fragment 时将焦点设置在 SearchBar View 上。我尝试了以下方法: mSearchBar.setFocusable
我想在输入 edittext 内容的 ListView 行中搜索相关的 Row。 如何在 Listview 中获取行..请给我示例代码.. 谢谢 最佳答案 我假设您想根据您键入的 edittext 值
我是一名优秀的程序员,十分优秀!