热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

098在屏幕中实现一个检索框效果

效果如下:ViewController.h1#import23@interfaceViewController:UITableViewController4@property(st

效果如下:

技术分享

ViewController.h

1 #import 
2 
3 @interface ViewController : UITableViewController
4 @property (strong, nonatomic) UISearchBar *searchBar;
5 @property (strong, nonatomic) NSMutableArray *mArrDataSourceOfTableView;
6 @property (strong, nonatomic) NSMutableArray *mArrDataSourceOfSearchBar;
7 
8 @end

ViewController.m

  1 #import "ViewController.h"
  2 
  3 @interface ViewController ()
  4 - (void)layoutUI;
  5 - (void)loadNavigation;
  6 - (void)loadData;
  7 - (void)updateTableView:(NSString *)searchText;
  8 - (void)barStyleDidPush:(UIBarButtonItem *)sender;
  9 - (void)tintColorDidPush:(UIBarButtonItem *)sender;
 10 @end
 11 
 12 @implementation ViewController
 13 #define kCount 64
 14 
 15 - (void)viewDidLoad {
 16     [super viewDidLoad];
 17     
 18     [self layoutUI];
 19 }
 20 
 21 - (void)didReceiveMemoryWarning {
 22     [super didReceiveMemoryWarning];
 23     // Dispose of any resources that can be recreated.
 24 }
 25 
 26 - (void)viewWillAppear:(BOOL)animated {
 27     [super viewWillAppear:animated];
 28     [self.navigationController setNavigationBarHidden:NO animated:animated];
 29     [self.navigationController setToolbarHidden:NO animated:animated];
 30 }
 31 
 32 #pragma mark - Private Methods
 33 - (void)layoutUI {
 34     [self loadNavigation];
 35     
 36     [self loadData];
 37     
 38     _searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, self.tableView.frame.size.width, 50)];
 39     _searchBar.delegate = self;
 40     _searchBar.prompt = @"数字查询";
 41     _searchBar.placeholder = @"请输入0-63之间的数字";
 42     _searchBar.keyboardType = UIKeyboardTypeNumberPad;
 43     _searchBar.barStyle = UIBarStyleDefault;
 44     _searchBar.tintColor = [UIColor blackColor];
 45     [_searchBar sizeToFit]; //设置宽高大小自适应
 46     self.tableView.tableHeaderView = _searchBar;
 47 }
 48 
 49 - (void)loadNavigation {
 50     self.navigationItem.title = @"在屏幕中实现一个检索框效果";
 51     UIBarButtonItem *barBtnBarStyle = [[UIBarButtonItem alloc] initWithTitle:@"改变barStyle"
 52                                                                        style:UIBarButtonItemStyleDone
 53                                                                       target:self
 54                                                                       action:@selector(barStyleDidPush:)];
 55     UIBarButtonItem *barBtnTintColor = [[UIBarButtonItem alloc] initWithTitle:@"改变tintColor"
 56                                                                        style:UIBarButtonItemStyleDone
 57                                                                       target:self
 58                                                                       action:@selector(tintColorDidPush:)];
 59     [self setToolbarItems:@[barBtnBarStyle, barBtnTintColor]];
 60 }
 61 
 62 - (void)loadData {
 63     _mArrDataSourceOfTableView = [[NSMutableArray alloc] initWithCapacity:kCount];
 64     _mArrDataSourceOfSearchBar = [[NSMutableArray alloc] initWithCapacity:kCount];
 65     for (NSInteger i=0; i) {
 66         [_mArrDataSourceOfTableView addObject:[NSString stringWithFormat:@"%ld", (long)i]];
 67         _mArrDataSourceOfSearchBar[i] = _mArrDataSourceOfTableView[i];
 68     }
 69 }
 70 
 71 - (void)updateTableView:(NSString *)searchText {
 72     [_mArrDataSourceOfSearchBar removeAllObjects];
 73     if (searchText.length == 0) {
 74         _mArrDataSourceOfSearchBar = [[NSMutableArray alloc] initWithArray:_mArrDataSourceOfTableView];
 75     } else {
 76         for (NSString *item in _mArrDataSourceOfTableView) {
 77             if ([item hasPrefix:searchText]) {
 78                 [_mArrDataSourceOfSearchBar addObject:item];
 79             }
 80         }
 81     }
 82     //表格视图tableView更新
 83     [self.tableView reloadData];
 84 }
 85 
 86 - (void)barStyleDidPush:(UIBarButtonItem *)sender {
 87     static NSInteger barStyleIndex = 1;
 88     switch (barStyleIndex%2) {
 89         case 0:
 90             _searchBar.barStyle = UIBarStyleDefault;
 91             break;
 92         case 1:
 93             _searchBar.barStyle = UIBarStyleBlack;
 94             break;
 95     }
 96     barStyleIndex++;
 97 }
 98 
 99 - (void)tintColorDidPush:(UIBarButtonItem *)sender {
100     static NSInteger tintColorIndex = 1;
101     switch (tintColorIndex%2) {
102         case 0:
103             _searchBar.tintColor = [UIColor blackColor];
104             break;
105         case 1:
106             _searchBar.tintColor = [UIColor redColor];
107             break;
108     }
109     tintColorIndex++;
110 }
111 
112 #pragma mark - SearchBar
113 - (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText {
114     [self updateTableView:searchText];
115 }
116 
117 - (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar {
118     [self updateTableView:searchBar.text];
119     //隐藏键盘
120     [_searchBar resignFirstResponder];
121 }
122 
123 #pragma mark - TableView
124 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
125     return [_mArrDataSourceOfSearchBar count];
126 }
127 
128 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
129     static NSString *cellIdentifier = @"cellIdentifier";
130     UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
131     if (!cell) {
132         cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
133     }
134     cell.textLabel.text = _mArrDataSourceOfSearchBar[indexPath.row];
135     return cell;
136 }
137 
138 @end

AppDelegate.h

1 #import 
2 
3 @interface AppDelegate : UIResponder 
4 @property (strong, nonatomic) UIWindow *window;
5 @property (strong, nonatomic) UINavigationController *navigationController;
6 
7 @end

AppDelegate.m

 1 #import "AppDelegate.h"
 2 #import "ViewController.h"
 3 
 4 @interface AppDelegate ()
 5 @end
 6 
 7 @implementation AppDelegate
 8 
 9 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
10     _window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
11     ViewController *viewCOntroller= [[ViewController alloc] init];
12     _navigatiOnController= [[UINavigationController alloc] initWithRootViewController:viewController];
13     _window.rootViewCOntroller= _navigationController;
14     //[_window addSubview:_navigationController.view]; //当_window.rootViewController关联时,这一句可有可无
15     [_window makeKeyAndVisible];
16     return YES;
17 }
18 
19 - (void)applicationWillResignActive:(UIApplication *)application {
20 }
21 
22 - (void)applicationDidEnterBackground:(UIApplication *)application {
23 }
24 
25 - (void)applicationWillEnterForeground:(UIApplication *)application {
26 }
27 
28 - (void)applicationDidBecomeActive:(UIApplication *)application {
29 }
30 
31 - (void)applicationWillTerminate:(UIApplication *)application {
32 }
33 
34 @end

098在屏幕中实现一个检索框效果


推荐阅读
  • 在1995年,Simon Plouffe 发现了一种特殊的求和方法来表示某些常数。两年后,Bailey 和 Borwein 在他们的论文中发表了这一发现,这种方法被命名为 Bailey-Borwein-Plouffe (BBP) 公式。该问题要求计算圆周率 π 的第 n 个十六进制数字。 ... [详细]
  • 本文介绍了用户界面(User Interface, UI)的基本概念,以及在iOS应用程序中UIView及其子类的重要性和使用方式。文章详细探讨了UIView如何作为用户交互的核心组件,以及它与其他UI控件和业务逻辑的关系。 ... [详细]
  • 解决UIScrollView自动偏移问题的方法
    本文介绍了一种有效的方法来解决在使用UIScrollView时出现的自动向下偏移的问题,通过调整特定的属性设置,可以确保滚动视图正常显示。 ... [详细]
  • 如何高效渲染JSON数据
    本文介绍了在控制器中返回JSON结果的方法,并详细说明了如何利用jQuery处理和展示这些数据,为Web开发提供了实用的技巧。 ... [详细]
  • 深入解析Unity3D游戏开发中的音频播放技术
    在游戏开发中,音频播放是提升玩家沉浸感的关键因素之一。本文将探讨如何在Unity3D中高效地管理和播放不同类型的游戏音频,包括背景音乐和效果音效,并介绍实现这些功能的具体步骤。 ... [详细]
  • 本文探讨了一种常见的C++面试题目——实现自己的String类。通过此过程,不仅能够检验开发者对C++基础知识的掌握程度,还能加深对其高级特性的理解。文章详细介绍了如何实现基本的功能,如构造函数、析构函数、拷贝构造函数及赋值运算符重载等。 ... [详细]
  • 本文介绍了如何在AngularJS应用中使用ng-repeat指令创建可单独点击选中的列表项,并详细描述了实现这一功能的具体步骤和代码示例。 ... [详细]
  • 在Notepad++中配置Markdown语法高亮及实时预览功能
    本文详细介绍了如何在Notepad++中配置Markdown语法高亮和实时预览功能,包括必要的插件安装和设置步骤。 ... [详细]
  • 网络流24题——试题库问题
    题目描述:假设一个试题库中有n道试题。每道试题都标明了所属类别。同一道题可能有多个类别属性。现要从题库中抽取m道题组成试卷。并要求试卷包含指定类型的试题。试设计一个满足要求的组卷算 ... [详细]
  • 二维码的实现与应用
    本文介绍了二维码的基本概念、分类及其优缺点,并详细描述了如何使用Java编程语言结合第三方库(如ZXing和qrcode.jar)来实现二维码的生成与解析。 ... [详细]
  • HTML前端开发:UINavigationController与页面间数据传递详解
    本文详细介绍了如何在HTML前端开发中利用UINavigationController进行页面管理和数据传递,适合初学者和有一定基础的开发者学习。 ... [详细]
  • 本文详细探讨了 Android Service 组件中 onStartCommand 方法的四种不同返回值及其应用场景。Service 可以在后台执行长时间的操作,无需提供用户界面,支持通过启动和绑定两种方式创建。 ... [详细]
  • iOS如何实现手势
    这篇文章主要为大家展示了“iOS如何实现手势”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“iOS ... [详细]
  • 本文旨在探讨Swift中的Closure与Objective-C中的Block之间的区别与联系,通过定义、使用方式以及外部变量捕获等方面的比较,帮助开发者更好地理解这两种机制的特点及应用场景。 ... [详细]
  • 本文提供了一个关于AC自动机(Aho-Corasick Algorithm)的详细解析与实现方法,特别针对P3796题目进行了深入探讨。文章不仅涵盖了AC自动机的基本概念,还重点讲解了如何通过构建失败指针(fail pointer)来提高字符串匹配效率。 ... [详细]
author-avatar
hazouri林_978
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有