亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > iOS > 正文

iOS tableview實現簡單搜索功能

2019-10-21 18:43:32
字體:
來源:轉載
供稿:網友

本文實例為大家分享了tableview實現搜索功能的具體代碼,供大家參考,具體內容如下

一、先用xcode創建好工程

iOS,tableview,搜索

通過xib文件來初始化視圖控制器

iOS,tableview,搜索

二、編寫代碼

1、先為NSDictionary創建一個分類 實現字典的深拷貝

.h文件

#import <Foundation/Foundation.h>@interface NSDictionary (MutableDeepCopy)- (NSMutableDictionary *)mutableDeepCopy;@end

.m文件

#import "NSDictionary+MutableDeepCopy.h"@implementation NSDictionary (MutableDeepCopy)- (NSMutableDictionary *)mutableDeepCopy{ NSMutableDictionary *mutableDictionary = [NSMutableDictionary dictionaryWithCapacity:[self count]]; //這里的容量也只是個參考值,表示對大小的限制 大小是調用該方法的count NSArray *keys = [self allKeys]; //self就是個可變的字典 for(id key in keys) {  id dicValue = [self valueForKey:key];   //從 NSDictionary 取值的時候有兩個方法objectForkey valueForKey  id dicCopy = nil;  if([dicValue respondsToSelector:@selector(mutableDeepCopy)])   //如果對象沒有響應mutabledeepcopy 就創建一個可變副本 dicValue 有沒有實現這個方法  {   dicCopy = [dicValue mutableDeepCopy];  }  else if([dicValue respondsToSelector:@selector(mutableCopy)])  {   dicCopy = [dicValue mutableCopy];  }  if(dicCopy ==nil)  {   dicCopy = [dicValue copy];  }  [mutableDictionary setValue:dicCopy forKey:key]; } return mutableDictionary;}@end

2、編寫主代碼

.h文件
NoteScanViewController.h

#import <UIKit/UIKit.h>@interface NoteScanViewController : UIViewController <UITableViewDataSource,UITableViewDelegate,UISearchBarDelegate>@property (nonatomic,retain)NSMutableDictionary *words;@property (nonatomic,retain)NSMutableArray *keys;@property (weak, nonatomic) IBOutlet UITableView *table;@property (weak, nonatomic) IBOutlet UISearchBar *search;@property (nonatomic,retain)NSDictionary *allWords;- (void)resetSearch;- (void)handleSearchForTerm:(NSString *)searchTerm;@end

.m文件

#import "NoteScanViewController.h"#import "NSDictionary+MutableDeepCopy.h"@interface NoteScanViewController ()@end@implementation NoteScanViewController- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{ self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) {  // Custom initialization } return self;}- (void)viewDidLoad //只在第一次加載視圖調用{ [super viewDidLoad]; /*加載plist文件*/ NSString *wordsPath = [[NSBundle mainBundle]pathForResource:@"NoteSection" ofType:@"plist"];//得到屬性列表的路徑 NSDictionary *dictionary = [[NSDictionary alloc]initWithContentsOfFile:wordsPath]; self.allWords = dictionary; [self resetSearch]; //加載并填充words可變字典和keys數組  _search.autocapitalizationType = UITextAutocapitalizationTypeNone;//不自動大寫 _search.autocorrectionType = UITextAutocorrectionTypeNo;//不自動糾錯}//取消搜索或者改變搜索條件- (void)resetSearch{ self.words = [self.allWords mutableDeepCopy]; //得到所有字典的副本 得到一個字典 NSLog(@"所有字典 = %@",self.words); NSMutableArray *keyArray = [[NSMutableArray alloc]init];//創建一個可變數組 [keyArray addObjectsFromArray:[[self.allWords allKeys]sortedArrayUsingSelector:@selector(compare:)]]; //用指定的selector對array的元素進行排序 self.keys = keyArray; //將所有key 存到一個數組里面 NSLog(@"所有key = %@",self.keys);}//實現搜索方法- (void)handleSearchForTerm:(NSString *)searchTerm{ NSMutableArray *sectionsRemove = [[NSMutableArray alloc]init]; //創建一個數組存放我們所找到的空分區 [self resetSearch]; for(NSString *key in self.keys)//遍歷所有的key {  NSMutableArray *array = [_words valueForKey:key] ;  //得到當前鍵key的名稱 數組  NSMutableArray *toRemove = [[NSMutableArray alloc]init];//需要從words中刪除的值 數組  for(NSString *word in array) //實現搜索  {   if([word rangeOfString:searchTerm options:NSCaseInsensitiveSearch].location == NSNotFound)//搜索時忽略大小寫 把沒有搜到的值 放到要刪除的對象數組中去    [toRemove addObject:word]; //把沒有搜到的內容放到 toRemove中去  }    if([array count] == [toRemove count])//校對要刪除的名稱數組長度和名稱數組長度是否相等   [sectionsRemove addObject:key]; //相等 則整個分區組為空  [array removeObjectsInArray:toRemove]; //否則 刪除數組中所有與數組toRemove包含相同的元素 } [self.keys removeObjectsInArray:sectionsRemove];// 刪除整個key 也就是刪除空分區,釋放用來存儲分區的數組,并重新加載table 這樣就實現了搜索 [_table reloadData];}- (void)viewWillAppear:(BOOL)animated //當使用Push或者prenset方式調用{}//#pragma mark -- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{ return ([_keys count] >0)?[_keys count]:1; //搜索時可能會刪除所有分區 則要保證要有一個分區}- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ if([_keys count] == 0) {  return 0; } NSString *key = [_keys objectAtIndex:section]; //得到第幾組的key NSArray *wordSection = [_words objectForKey:key]; //得到這個key里面所有的元素 return [wordSection count]; //返回元素的個數}- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ NSUInteger section = [indexPath section]; //得到第幾組 NSUInteger row = [indexPath row]; //得到第幾行 NSString *key = [_keys objectAtIndex:section]; //得到第幾組的key NSArray *wordSection = [_words objectForKey:key]; //得到這個key里面的所有元素 static NSString *NoteSectionIdentifier = @"NoteSectionIdentifier"; UITableViewCell *cell =[tableView dequeueReusableCellWithIdentifier:NoteSectionIdentifier]; if(cell == nil) {  cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NoteSectionIdentifier];   } cell.textLabel.text = [wordSection objectAtIndex:row]; return cell;}//為每個分區指定一個標題- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{ if([_keys count] == 0)  return @" "; NSString *key = [_keys objectAtIndex:section]; return key;}//創建一個索引表- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView{ return _keys;}#pragma mark - - (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath{ [_search resignFirstResponder]; //點擊任意 cell都會取消鍵盤 return indexPath;}#pragma mark-- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar //搜索button點擊事件{ NSString *searchTerm = [searchBar text]; [self handleSearchForTerm:searchTerm]; //搜索內容 刪除words里面的空分區和不匹配內容}- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText{ //搜索內容隨著輸入及時地顯示出來 if([searchText length] == 0) {  [self resetSearch];  [_table reloadData];  return; } else  [self handleSearchForTerm:searchText];}- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar //點擊取消按鈕{ _search.text = @""; //標題 為空 [self resetSearch]; //重新 加載分類數據 [_table reloadData]; [searchBar resignFirstResponder]; //退出鍵盤}@end

運行結果

iOS,tableview,搜索iOS,tableview,搜索

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到IOS開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产一区二区视频在线观看| 国产欧美日韩免费看aⅴ视频| 日韩av在线网址| 欧美激情精品久久久久久久变态| 欧美日韩国产丝袜美女| 北条麻妃在线一区二区| 亚洲国产精久久久久久| 92国产精品视频| 美女999久久久精品视频| 国产精品夫妻激情| 国产专区欧美专区| 久久久久久一区二区三区| 国产精品伦子伦免费视频| 日韩在线观看成人| 亚州国产精品久久久| 成人夜晚看av| 96精品久久久久中文字幕| 久久久久久成人| 亚洲自拍偷拍区| 日韩精品一二三四区| 26uuu另类亚洲欧美日本一| 亚洲成人网在线| 久久91超碰青草是什么| xxxxx91麻豆| 伊人青青综合网站| 亚洲福利视频专区| 免费99精品国产自在在线| 97在线免费观看视频| 国产精品99导航| 久久99久久亚洲国产| 日韩在线观看免费全| 国产美女久久精品香蕉69| 亚洲欧美日韩国产成人| 在线观看日韩视频| 亚洲一级黄色片| 91美女高潮出水| 国产欧美一区二区三区四区| 久久视频免费在线播放| 国产精品成人aaaaa网站| 亚洲精品在线看| 国产综合久久久久久| 精品久久中文字幕久久av| 亚洲自拍小视频| 亚洲自拍偷拍色图| 日韩在线观看免费网站| 精品美女永久免费视频| 国产精品三级在线| 亚洲欧美日韩精品| 欧美日韩国产页| 亚洲欧美日本精品| 欧美日韩综合视频| 成人伊人精品色xxxx视频| 国产精品免费一区二区三区都可以| 国产精品视频一区二区三区四| 国产色综合天天综合网| 国产精品视频久久久| 国内精品免费午夜毛片| 97人人模人人爽人人喊中文字| 日本高清视频精品| 精品人伦一区二区三区蜜桃网站| 国产精品一区二区电影| 欧美精品成人在线| 都市激情亚洲色图| 亚洲第一免费网站| 96精品久久久久中文字幕| 日本欧美黄网站| 91色在线视频| 国产精品久久久久久久久久久久久| 正在播放欧美一区| 欧美美最猛性xxxxxx| 久久精品2019中文字幕| 欧美午夜视频一区二区| 中文日韩在线视频| 日韩欧美在线视频日韩欧美在线视频| 97精品一区二区三区| 91精品在线播放| 91在线观看免费高清完整版在线观看| 中文字幕日韩欧美在线视频| 中国人与牲禽动交精品| 国产精品久久久精品| 欧美日韩国产123| 欧美精品videos性欧美| 一区二区在线视频播放| 中日韩美女免费视频网址在线观看| 欧美肥臀大乳一区二区免费视频| 亚洲少妇中文在线| 欧美日韩国产综合视频在线观看中文| 这里只有精品久久| 日本精品久久电影| 亚洲国产成人精品电影| 欧美黄色片视频| 亚洲日本成人女熟在线观看| 亚洲精品免费av| 日韩欧美在线视频日韩欧美在线视频| 欧美电影电视剧在线观看| 精品久久久久久久中文字幕| 精品久久久久久国产91| 亚洲sss综合天堂久久| 亚洲人a成www在线影院| 欧美小视频在线| 亚洲精品wwww| 久久人人爽亚洲精品天堂| 九九热精品在线| 欧美超级免费视 在线| 亚洲第一视频在线观看| 97婷婷大伊香蕉精品视频| 成人久久久久久| 中文字幕亚洲色图| 日本乱人伦a精品| 国产精品一区二区在线| 中文字幕亚洲欧美在线| 午夜精品久久久久久久男人的天堂| 夜夜躁日日躁狠狠久久88av| 欧美激情亚洲精品| 亚洲精品小视频在线观看| 日韩h在线观看| 成人在线免费观看视视频| 成人网欧美在线视频| 亚洲精品mp4| 另类图片亚洲另类| 欧美激情欧美激情在线五月| 2018日韩中文字幕| 色妞在线综合亚洲欧美| 亚洲精品视频免费在线观看| 国产91精品久久久久| 久久影院免费观看| 亚洲精品国产成人| 中文日韩在线视频| 欧美一级成年大片在线观看| 中文字幕免费精品一区高清| 97在线观看视频| 色综合久久天天综线观看| 日韩精品www| 日本亚洲精品在线观看| 中文字幕亚洲一区在线观看| 韩国欧美亚洲国产| 亚洲美女自拍视频| 尤物九九久久国产精品的分类| 日韩精品中文字幕在线观看| 日本乱人伦a精品| 国产精品高清网站| 国产91九色视频| 欧洲一区二区视频| 欧美乱大交xxxxx| 久久人91精品久久久久久不卡| 日韩av在线影院| www.欧美三级电影.com| 久久精品国产精品| 亚洲最新av网址| 日韩精品中文字幕有码专区| 97av在线视频免费播放| 91精品国产91久久久久久| 亚洲免费精彩视频| 欧美亚洲日本网站| 久久综合国产精品台湾中文娱乐网| 91高清免费在线观看| 欧美成人手机在线| 78m国产成人精品视频| 97精品国产aⅴ7777| 久久久久久久久久久人体| 欧美肥老妇视频| 精品久久香蕉国产线看观看亚洲| 久久人人97超碰精品888| 午夜精品一区二区三区视频免费看|