- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有带有 searchBar 的 tableview Controller ,我想在数组中搜索项目在我的示例中,我想在 leagues 数组中搜索 teamsArr 项目
现在我的代码在 Legue Name 中搜索正常,而不是在 Teams name 中搜索
我的代码:
import UIKit
struct Legue {
var name:String
var num:Int
var teamsArr:[String]
}
class Table1ViewController: UIViewController,UITableViewDelegate,UITableViewDataSource,UISearchResultsUpdating {
@IBOutlet var myTable: UITableView!
let cellID="MyCellID"
var Legues:[Legue]=[]
var searchController=UISearchController(searchResultsController: nil)
var filterLegues:[Legue]=[]
func filterContentForSearch(searchText:String,scope:String="All2")
{
filterLegues=Legues.filter{leg in
return leg.name.containsString(searchText) **\\ Here search only in Legue name ,but i want to search in teams name**
}
myTable.reloadData()
}
override func viewDidLoad() {
super.viewDidLoad()
myTable.registerClass(UITableViewCell.self, forCellReuseIdentifier: cellID)
myTable.delegate=self
myTable.dataSource=self
Legues=self.loadData()
searchController.searchResultsUpdater=self
searchController.dimsBackgroundDuringPresentation=false
definesPresentationContext=true
myTable.tableHeaderView=searchController.searchBar
searchController.hidesNavigationBarDuringPresentation=false
}
func loadData()->[Legue]
{
let arrlegue=[Legue(name:"Spain",num: 3,teamsArr: ["Barcelona","Atletico Madrid","Real Madrid"]),Legue(name:"Saudi",num: 4,teamsArr: ["Ahli","Hilal","AlNaser","AlEtihad"]),Legue(name:"England",num: 2,teamsArr:["Lestercity","Man City"]),Legue(name:"Italy",num: 5,teamsArr: ["Juventus","Napoli","AS Roma","Internazionale","AC Milano"])]
return arrlegue
}
override func prefersStatusBarHidden() -> Bool {
return true
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if searchController.active && searchController.searchBar.text != ""
{
let x=filterLegues[section].teamsArr.count
return x
}
let x=Legues[section].teamsArr.count
return x
}
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
if searchController.active && searchController.searchBar.text != ""
{
return filterLegues.count
}
else
{
return Legues.count
}
}
func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
if searchController.active && searchController.searchBar.text != ""
{
return filterLegues[section].name
}
else
{
return Legues[section].name
}
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell=myTable.dequeueReusableCellWithIdentifier(cellID, forIndexPath: indexPath)
if searchController.active && searchController.searchBar.text != ""
{
cell.textLabel?.text="\(filterLegues[indexPath.section].teamsArr[indexPath.row])"
cell.imageView?.image=UIImage(named: filterLegues[indexPath.section].name)
}
else
{
cell.textLabel?.text="\(Legues[indexPath.section].teamsArr[indexPath.row])"
cell.imageView?.image=UIImage(named: Legues[indexPath.section].name)
}
return cell
}
func tableView(tableView: UITableView, canMoveRowAtIndexPath indexPath: NSIndexPath) -> Bool {
return true
}
func tableView(tableView: UITableView, moveRowAtIndexPath sourceIndexPath: NSIndexPath, toIndexPath destinationIndexPath: NSIndexPath) {
if sourceIndexPath != destinationIndexPath
{
let itemToMove=Legues[sourceIndexPath.section]
Legues.removeAtIndex(sourceIndexPath.section)
Legues.insert(itemToMove, atIndex: destinationIndexPath.section)
myTable.reloadData()
}
}
@IBAction func editButton(sender: UIBarButtonItem) {
myTable.editing=true
}
func updateSearchResultsForSearchController(searchController: UISearchController)
{
filterContentForSearch(searchController.searchBar.text!)
}
最佳答案
我的代码就是这样,而且它有效:
//
// InterestsTableViewController.swift
// OyventIOSApp
//
// Created by Mehmet Sen on 9/9/16.
// Copyright © 2016 Mehmet Sen. All rights reserved.
//
import UIKit
class InterestsTableViewController: UITableViewController {
let api: InterestAPI = InterestAPI()
var pkUserID : Double!
var ismyprofile : Bool! = false
var sections: [SectionData] = []
let searchController = UISearchController(searchResultsController: nil)
var filteredSections: [SectionData] = []
func filterContentForSearchText(searchText: String, scope: String = "ALL") {
filteredSections = sections.map{ (section) -> SectionData in
let interests = section.interests.filter{$0.name!.localizedCaseInsensitiveContainsString(searchText.lowercaseString)}
return SectionData(title: section.title, interests: interests)}.filter{$0.numberOfItems > 0
}
tableView.reloadData()
}
override func viewDidLoad() {
super.viewDidLoad()
pkUserID = NSNumberFormatter().numberFromString(NSUserDefaults.standardUserDefaults().stringForKey("blabla_id")!)?.doubleValue
searchController.searchResultsUpdater = self
searchController.dimsBackgroundDuringPresentation = false
definesPresentationContext = true
tableView.tableHeaderView = searchController.searchBar
UIApplication.sharedApplication().networkActivityIndicatorVisible = true
api.fetchUserInterestList(pkUserID) { (results: NSDictionary) in
var resultsArr: [Interest] = results["results"] as! [Interest]
dispatch_async(dispatch_get_main_queue(), {
resultsArr = Interest.interestsWithJSON(resultsArr)
for i in 0 ..< resultsArr.count {
var exists: Bool = false
for j in 0 ..< self.sections.count {
if self.sections[j].title == resultsArr[i].scope{
exists = true
self.sections[j].interests.append(resultsArr[i])
}
}
if(exists == false){
let sectionData = SectionData(title: resultsArr[i].scope!, interest: resultsArr[i])
self.sections.append(sectionData)
}
}
self.tableView!.reloadData()
UIApplication.sharedApplication().networkActivityIndicatorVisible = false
})
}
}
// MARK: - Table view data source
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return searchController.active && searchController.searchBar.text != "" ? filteredSections.count : sections.count
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return searchController.active && searchController.searchBar.text != "" ? filteredSections[section].numberOfItems : sections[section].numberOfItems
}
override func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
return sections[section].title
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath)
cell.backgroundColor = UIColor.clearColor()
let interest:Interest
interest = searchController.active && searchController.searchBar.text != "" ? filteredSections[indexPath.section][indexPath.row] : sections[indexPath.section][indexPath.row]
// insert the special characters using edit > emoji on the menu
cell.textLabel?.textColor = UIColor.whiteColor()
cell.textLabel!.text = interest.checked ? "✅ " + interest.name! : interest.name!
return cell
}
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
//get the interest object
let interest:Interest = sections[indexPath.section][indexPath.row]
if(self.ismyprofile != false){
interest.toggleCheck()
//add user interest
if(interest.checked){
api.addUserInterest(pkUserID, interestid: interest.interestid!, completionHandler: { (result: NSDictionary) in
let resultValue: Bool = result["success"] as! Bool!
if(resultValue){
//self.interests[indexPath.row] = interest
self.sections[indexPath.section][indexPath.row] = interest
}else{
interest.toggleCheck() //reverse back
}
})
}else{//delete user interest
api.deleteUserInterest(pkUserID, interestid: interest.interestid!, completionHandler: { (result: NSDictionary) in
let resultValue: Bool = result["success"] as! Bool!
if(resultValue){
//self.interests[indexPath.row] = interest
self.sections[indexPath.section][indexPath.row] = interest
}else{
interest.toggleCheck() //reverse back
}
})
}
}
tableView.reloadData()
}
/*
// MARK: - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
// Get the new view controller using segue.destinationViewController.
// Pass the selected object to the new view controller.
}
*/
}
class SectionData {
var title: String
var interests : [Interest] = []
init(title: String, interest: Interest) {
self.title = title
self.interests.append(interest)
}
init(title: String, interests: [Interest]) {
self.title = title
self.interests = interests
}
var numberOfItems: Int {
return interests.count
}
subscript(index: Int) -> Interest {
get {
return interests[index]
}
set(newValue) {
interests[index] = newValue
}
}
}
extension InterestsTableViewController: UISearchResultsUpdating {
func updateSearchResultsForSearchController(searchController: UISearchController) {
filterContentForSearchText(searchController.searchBar.text!)
}
}
//
// Interest.swift
// OyventIOSApp
//
// Created by Mehmet Sen on 8/11/16.
// Copyright © 2016 Mehmet Sen. All rights reserved.
//
import Foundation
class Interest {
var interestid: Int?
var name: String?
var userid: Double?
var scope: String?
var checked: Bool = false
init(interestid: Int, name: String, userid: Double, scope: String, checked: Bool){
self.interestid = interestid
self.name = name
self.userid = userid
self.scope = scope
self.checked = checked
}
class func interestsWithJSON(allResults: NSArray) -> [Interest] {
var interests = [Interest]()
if allResults.count > 0 {
for result in allResults {
let interestid = result["pkinterestid"] as? Int
let name = result["name"] as? String
let userid = result["fkuserid"] as? Double
let scope = result["scope"] as? String
let checked: Bool = userid > 0 ? true : false
//print("interestid: \(interestid!) name: \(name!) userid: \(userid!) checked: \(checked)")
let newInterest = Interest(interestid: interestid!, name: name!, userid: userid!, scope: scope!, checked: checked)
interests.append(newInterest)
}
}
return interests;
}
internal func toggleCheck(){
self.checked = !self.checked
}
}
关于ios - UISearchController 使用 Swift 2 在另一个数组中搜索数组项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36971135/
自动呈现 UISearchController 和自己呈现搜索 Controller 的行为不同。 @implementation MyViewComtroller // click search b
这就是我如何设置我的 UIsearchController private func setupSearchController() { let searchResultsController
我在导航项上使用 UISearchController(导航栏已设置为使用 barTintColor 和 twinColor)。当搜索 Controller 关闭(点击搜索栏的取消按钮)时,后退按钮的
我正在尝试创建与 iOS 8 中的联系人应用程序类似的体验。其主要组件是: 保持搜索栏固定在导航栏下方 在展示时将搜索栏附加到 View 顶部(标准功能)。 然而,这说起来容易做起来难。在与 tabl
当我将 UISearchController 的搜索栏中的占位符文本更新为比搜索栏更宽的内容时,搜索图标会发生这种情况: 我通过在 viewDidLoad 中调用以下方法添加了 UISearchCon
我在学习 UISearchController通过关注 this教程。然而,UISearchBar未显示。这是我的代码: let searchController = UISearchControll
我正在使用 UISearchController 在我的表格 View 中搜索数据。我没有使用 TableView Controller 。我想在搜索栏处于事件状态时隐藏导航栏,因此我将 self.s
在我的项目中,我使用了 UITableViewController带有内部 UISearchController过滤我的 tableView 中的数据. 我过滤数据没有问题,但我需要确定我的 tabl
我目前正在将 iPad 应用程序中的所有 View Controller 迁移为使用 iOS 11 标准 searchController(在导航项上)。问题是当它作为表单在 iPad 上显示时,搜索
我在 UITableView 的标题中使用 UISearchController 的 UISearchBar。我的搜索工作正常,因为当我在搜索栏的字段中输入一些文本时,所有相关方法都会被调用,并且表格
我以编程方式创建了一个 searchBar 并将其添加到导航栏平铺 View 中。这是我的代码: UISearchController *searchController = [[UISearchC
在 UISearchDisplayController在 viewWillAppear: 中有一种方法可以在没有动画的情况下将其设置为事件状态方法,因此 View Controller 将推送已激活的
我正在向现有应用程序添加搜索栏。 我有一个表,其中填充了从服务器下载的数据,并且我正在使用新的 UISearchController。 我现在让搜索栏完全正常工作,并在用户输入搜索栏时显示一个新的过滤
我以编程方式将UISearchController添加到UIViewController中,当加载UIViewController时一切都很好,但是当我触摸UISearchBar时在UISearchC
我正在尝试发送搜索电影的请求,但是当我点击搜索栏写入文本时,我在 cellforrow 中崩溃,并且它没有调用 numberofrows 也没有调用请求。这是我到目前为止的代码: class InTh
我在 UITableViewController 上添加了一个搜索栏,但每次单击搜索栏时都会收到错误。 View 也变黑了.. 警告:尝试在 FindViewController 上呈现 OWSear
我在我的应用程序中使用 UISearchController,如下 this教程: 现在已经设置了自定义UITableViewCell。 UISearchController 弄乱了我的单元格。 看起
据我了解,UISearchController 的默认行为是: 点击搜索栏时,背景会变暗并显示“取消”按钮。 SearchResultsController 直到此时才显示。 SearchResult
我将 UISearchController searchBar 添加到 Controller 的 View 中,如下所示:self.view.addSubview(searchController.s
class PlaceSelectorViewController: UIViewController, GMSAutocompleteResultsViewControllerDelegate, U
我是一名优秀的程序员,十分优秀!