zoukankan      html  css  js  c++  java
  • UI UISearchBar UISearchDisplayController实现搜索条、解析颜色

     

    本文转载至 http://blog.sina.com.cn/s/blog_bf2d33bd01017q6l.html

    @interface ThirdViewController : UIViewController
    @property(nonatomic,retain)UITableView *tv;
    @property(nonatomic,retain)NSMutableArray *tarray,*filteredArray;
    @property(nonatomic,retain)UISearchDisplayController *sdc;//搜索栏控制器
    @property(nonatomic,retain)UISearchBar *serchbar;
    @end


    //
    #import "ThirdViewController.h"

    @interface ThirdViewController ()

    @end

    @implementation ThirdViewController
    @synthesize tarray,tv,sdc,serchbar,filteredArray;
    - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
    {
        self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
        if (self) {
            // Custom initialization
        }
        return self;
    }
    //crayons.txt
    - (void)viewDidLoad
    {
        [super viewDidLoad];
        self.title=@"搜索";
    //    self.view.backgroundColor=[UIColor blueColor];横屏控制条高33竖屏控制条搞44
        self.tv=[[UITableView alloc]initWithFrame:CGRectMake(0, 0, 320, 480-44-44) style:UITableViewStylePlain];
        [self.view addSubview:tv];
        self.tv.dataSource=self;//设置代理为自身
        self.tv.delegate=self;
       
        NSString *path=[[NSBundle mainBundle]pathForResource:@"crayons" ofType:@"txt"];//取到路径
        NSString *readFile=[[NSString alloc]initWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];//读取文件
        self.tarray= (NSMutableArray*)[readFile componentsSeparatedByString:@" "];//分割数据
       
        //设置搜索条的大小
        self.serchbar=[[UISearchBar alloc]initWithFrame:CGRectMake(0, 0, 320, 44)];
        [self.view addSubview:serchbar];
       
        //创建搜索栏控制器
        self.sdc=[[UISearchDisplayController alloc]initWithSearchBar:serchbar contentsController:self];
        //UISearchDisplayController组件 和 UITableView共用用相同的代理
        sdc.searchResultsDataSource=self;//设置搜索结果数据源
        sdc.searchResultsDelegate=self;//设置代理
           
       
        [self.tv reloadData];//刷新数据
       
        // Do any additional setup after loading the view.
    }

    - (void)viewDidUnload
    {
        [super viewDidUnload];
        // Release any retained subviews of the main view.
    }

    - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
    {
        return (interfaceOrientation == UIInterfaceOrientationPortrait);
    }

    #pragma mark - Table view data source

    - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
    {
        //#warning Potentially incomplete method implementation.
        // Return the number of sections.
        return 1;
    }

    //返回条数
    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
    {
       
        //#警告不完整的方法实现。
        //返回一节中的行数。
    //    return [self.tarray count];
       
        if (tableView==self.tv)
        {
            return [self.tarray count];
        }
        else
        {
            //Cocoa提供了一个类NSPredicate类,该类主要用于指定过滤器的条件,该对象可以准确的描述所需条件,对每个对象通过谓词进行筛选,判断是否与条件相匹配。谓词表示计算真值或假值的函数。
            //用predicateWithFormat创建一个谓词,条件是搜索的信息
            //self关键字 字符串运算符CONTAINS[c][d][cd] CONTAINS:检查某个字符串是否以另一个字符串内部。[c]不区分大小写[d]不区分发音符号即没有重音符号[cd]既不区分大小写,又不区分发音符号。
            NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF contains[cd] %@", self.serchbar.text];
            //filteredArrayUsingPredicate方法它将循环过滤数组内容,根据谓词计算每个对象的值,并将值为YES的对象累计到将被返回的新数组filteredArray中。
            self.filteredArray = (NSMutableArray*)[self.tarray filteredArrayUsingPredicate:predicate];
            //符合搜索条件的新数组的长度
            return [self.filteredArray count];
        }

    }
    //返回可用单元格
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        static NSString *CellIdentifier = @"Cell";//复用cell的字符索引
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];//重用机制创建cell
       
        if (cell == nil)
        {
            cell = [[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier]autorelease];
        }
        int index = indexPath.row;//取出行标记
        NSString *txt = @"";
        if (tableView==self.tv)
        {
            txt=[self.tarray objectAtIndex:index];
        }else
        {
            txt=[self.filteredArray objectAtIndex:index];
        }
       
        NSArray *array = [txt componentsSeparatedByString:@"#"];//设置#分割
        cell.textLabel.text = [array objectAtIndex:0];
        UIColor *tc=[self setColorWithString:[array objectAtIndex:1]];
        cell.textLabel.textColor=tc;
       
        // Configure the cell...`
       
        return cell;
    }
    //设置行高
    -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        return 50;
    }
    -(UIColor*)setColorWithString:(NSString*)colorString
    {
        NSString *f1=[colorString substringWithRange:NSMakeRange(0, 2)];
        NSString *f2=[colorString substringWithRange:NSMakeRange(2, 2)];
        NSString *f3=[colorString substringWithRange:NSMakeRange(4, 2)];
        unsigned int red,green,blue;
        [[NSScanner scannerWithString:f1] scanHexInt:&red];
        [[NSScanner scannerWithString:f2] scanHexInt:&green];
        [[NSScanner scannerWithString:f3] scanHexInt:&blue];
    //    NSLog(@"f1===%d,f2===%d,f3===%d",red,green,blue);
        return [[UIColor alloc]initWithRed:red/255.0 green:green/255.0 blue:blue/255.0 alpha:1];
    }


     //重写的表视图,支持有条件的编辑。
     - (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
     {
     // 返回NO,如果你不想指定的项目为可编辑的。
     return YES;
     }


    #pragma mark - Table view delegate

    //响应单击事件
    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    {
        // Navigation logic may go here. Create and push another view controller.
        [self.tv resignFirstResponder];
        UITableViewCell *cell=[tableView cellForRowAtIndexPath:indexPath];
        self.serchbar.tintColor=cell.textLabel.textColor;
        self.navigationController.navigationBar.tintColor=cell.textLabel.textColor;  
    }
    //

    Almond #EED9C4
    Antique Brass #C88A65
    Apricot #FDD5B1
    Aquamarine #71D9E2
    Asparagus #7BA05B
    Atomic Tangerine #FF9966
    Banana Mania #FBE7B2
    Beaver #926F5B
    Bittersweet #FE6F5E
    Black #000000
    Blizzard Blue #A3E3ED
    Blue #0066FF
    Blue Bell #9999CC
    Blue Green #0095B6
    Blue Violet #6456B7
    Brick Red #C62D42
    Brink Pink #FB607F
    Brown #AF593E
    Burnt Orange #FF7034
    Burnt Sienna #E97451
    Cadet Blue #A9B2C3
    Canary #FFFF99
    Caribbean Green #00CC99
    Carnation Pink #FFA6C9
    Cerise #DA3287
    Cerulean #02A4D3
    Chartreuse #FF9966
    Chestnut #B94E48
    Copper #DA8A67
    Cornflower #93CCEA
    Cotton Candy #FFB7D5
    Cranberry #DB5079
    Dandelion #FED85D
    Denim #1560BD
    Desert Sand #EDC9AF
    Eggplant #614051
    Electric Lime #CCFF00
    Fern #63B76C
    Flesh #FFCBA4
    Forest Green #5FA777
    Fuchsia #C154C1
    Fuzzy Wuzzy Brown #C45655
    Gold #E6BE8A
    Goldenrod #FCD667
    Granny Smith Apple #9DE093
    Gray #8B8680
    Green #01A368
    Green Yellow #F1E788
    Happy Ever After #6CDA37
    Hot Magenta #FF00CC
    Inch Worm #B0E313
    Indian Red #B94E48
    Indigo #4F69C6
    Jazzberry Jam #A50B5E
    Jungle Green #29AB87
    Laser Lemon #FFFF66
    Lavender #FBAED2
    Macaroni And Cheese #FFB97B
    Magenta #F653A6
    Magic Mint #AAF0D1
    Mahogany #CA3435
    Manatee #8D90A1
    Mango Tango #E77200
    Maroon #C32148
    Mauvelous #F091A9
    Melon #FEBAAD
    Midnight Blue #003366
    Mountain Meadow #1AB385
    Mulberry #C54B8C
    Navy Blue #0066CC
    Neon Carrot #FF9933
    Olive Green #B5B35C
    Orange #FF681F
    Orchid #E29CD2
    Outer Space #2D383A
    Outrageous Orange #FF6037
    Pacific Blue #009DC4
    Peach #FFCBA4
    Periwinkle #C3CDE6
    Pig Pink #FDD7E4
    Pine Green #01796F
    Pink Flamingo #FF66FF
    Plum #843179
    Prussian Blue #003366
    Purple Heart #652DC1
    Purple Mountain's Majesty #9678B6
    Purple Pizzazz #FF00CC
    Radical Red #FF355E
    Raw Sienna #D27D46
    Razzle Dazzle Rose #FF33CC
    Razzmatazz #E30B5C
    Red #ED0A3F
    Red Orange #FF3F34
    Red Violet #BB3385
    Robin's Egg Blue #00CCCC
    Royal Purple #6B3FA0
    Salmon #FF91A4
    Scarlet #FD0E35
    Screamin' Green #66FF66
    Sea Green #93DFB8
    Sepia #9E5B40
    Shadow #837050
    Shamrock #33CC99
    Shocking Pink #FF6FFF
    Silver #C9C0BB
    Sky Blue #76D7EA
    Spring Green #ECEBBD
    Sunglow #FFCC33
    Sunset Orange #FE4C40
    Tan #FA9D5A
    Tickle Me Pink #FC80A5
    Timberwolf #D9D6CF
    Torch Red #FD0E35
    Tropical Rain Forest #00755E
    Tumbleweed #DEA681
    Turquoise Blue #6CDAE7
    Ultra Green #66FF66
    Ultra Orange #FF6037
    Ultra Pink #FF6FFF
    Ultra Red #FD5B78
    Ultra Yellow #FFFF66
    Unmellow Yellow #FFFF66
    Violet (purple) #8359A3
    Violet Red #F7468A
    Vivid Tangerine #FF9980
    Vivid Violet #803790
    White #FFFFFF
    Wild Blue Yonder #7A89B8
    Wild Strawberry #FF3399
    Wild Watermelon #FD5B78
    Wisteria #C9A0DC
    Yellow #FBE870
    Yellow Green #C5E17A
    Yellow Orange #FFAE42
  • 相关阅读:
    Java 中文 乱码问题
    JQuery 操作 radio 被坑一例
    标准I/O库之打开和关闭流
    标准I/O库之缓冲
    标准I/O库之标准输入、标准输出和标准出错
    标准I/O库之流和FILE对象
    文件和目录之文件访问权限位小结
    文件和目录之设备特殊文件
    文件和目录之chdir、fchdir和getcwd函数
    文件和目录之读目录
  • 原文地址:https://www.cnblogs.com/Camier-myNiuer/p/4076470.html
Copyright © 2011-2022 走看看