tableView点击更多及搜索栏
2013-08-02 14:55
357 查看
头文件声明了3个属性:
products是可变数组,存放数据源。
tableView,UITableView对象,用来现实数据,主要是用来区分是原数据的tableView还是搜索结果的tableView
result,可变数组,用来存放搜索的结果。
1个成员变量,可变数组,用来保存每个section的拉伸状态
头文件如下:
实现文件值得注意的是,
在设置section和设置row数量的时候,要判定是哪个tableView,这里有两个tableView,一个是原数据的tableView,一个是搜索结果的tableView
实现文件如下:
products是可变数组,存放数据源。
tableView,UITableView对象,用来现实数据,主要是用来区分是原数据的tableView还是搜索结果的tableView
result,可变数组,用来存放搜索的结果。
1个成员变量,可变数组,用来保存每个section的拉伸状态
头文件如下:
// // laomaoProductsViewController.h // 20130801_tableViewExpand // // Created by laomaoshiba on 13-8-2. // Copyright (c) 2013年 ibokan. All rights reserved. // #import <UIKit/UIKit.h> @interface laomaoProductsViewController : UIViewController<UISearchDisplayDelegate,UITableViewDelegate,UITableViewDataSource>{ NSMutableArray * _boolArray; } @property (retain,nonatomic) NSMutableArray * products; @property (retain,nonatomic) UITableView * tableView; @property (retain,nonatomic) NSMutableArray * result; @end
实现文件值得注意的是,
在设置section和设置row数量的时候,要判定是哪个tableView,这里有两个tableView,一个是原数据的tableView,一个是搜索结果的tableView
实现文件如下:
// // laomaoProductsViewController.m // 20130801_tableViewExpand // // Created by laomaoshiba on 13-8-2. // Copyright (c) 2013年 ibokan. All rights reserved. // #import "laomaoProductsViewController.h" @interface laomaoProductsViewController () @end @implementation laomaoProductsViewController - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { self.products = [NSMutableArray arrayWithCapacity:0]; _boolArray = [[NSMutableArray alloc]initWithCapacity:0]; for (int j=1; j<3; j++) { NSMutableArray * element = [NSMutableArray arrayWithCapacity:0]; for (int i=1; i<5; i++) { [element addObject:[NSString stringWithFormat:@"%d,%d",j,i]]; } [_products addObject:element]; [_boolArray addObject:@"YES"]; //[element removeAllObjects]; } UISearchBar * sb = [[UISearchBar alloc]initWithFrame:CGRectMake(0, 0, 320, 50)]; [self.view addSubview:sb]; UISearchDisplayController * sdc = [[UISearchDisplayController alloc]initWithSearchBar:sb contentsController:self]; _tableView = [[UITableView alloc]initWithFrame:CGRectMake(0, 50, 320, 430) style:UITableViewStylePlain]; [self.view addSubview:_tableView]; sdc.searchResultsDelegate = self; sdc.searchResultsDataSource = self; self.tableView.delegate = self; self.tableView.dataSource = self; //laomaoProductTableView * lptv = [[laomaoProductTableView alloc]initWithFrame:CGRectMake(0, 50, 320, 430) style:UITableViewStylePlain]; //lptv.products = self.products; //lptv.boolArray = _boolArray; //[self.view addSubview:lptv]; } return self; } - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { if (tableView == self.tableView) { return self.products.count; } else { return 1; } } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { if (tableView == self.tableView) { if ([_boolArray[section] isEqualToString:@"YES"]) { return [[_products objectAtIndex:section] count]; }else{ return 1; } } else { self.result = [NSMutableArray arrayWithCapacity:0]; NSPredicate * pre = [NSPredicate predicateWithFormat:@"self contains [cd] %@",self.searchDisplayController.searchBar.text]; for (int i=0; i<self.products.count; i++) { NSArray * result = [self.products[i] filteredArrayUsingPredicate:pre]; for (NSString * tmpStr in result) { [self.result addObject:tmpStr]; } } return self.result.count; //self.result = [self.products[0] filteredArrayUsingPredicate:pre]; //return self.result.count; } } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"Cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; //UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; if (cell == nil) { cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; } if (tableView == self.tableView) { //如果本section对应的数组成员数大于本section的行数,则说明是收缩状态 if ([[self.products objectAtIndex:indexPath.section] count] > indexPath.row) { cell.textLabel.text = [[self.products objectAtIndex:indexPath.section] objectAtIndex:indexPath.row]; } if ([_boolArray[indexPath.section] isEqualToString: @"NO"] && indexPath.row == 0 && [[self.products objectAtIndex:indexPath.section] count] != 1) { cell.textLabel.text = nil; } } else { cell.textLabel.text = [self.result objectAtIndex:indexPath.row]; } return cell; } - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { if (tableView == self.tableView) { [tableView deselectRowAtIndexPath:indexPath animated:NO]; NSMutableArray * array = [NSMutableArray arrayWithCapacity:0]; if (indexPath.row == 0 && [_boolArray[indexPath.section] isEqualToString:@"YES"]) { _boolArray[indexPath.section] = @"NO"; for (int i=1; i<[[_products objectAtIndex:indexPath.section] count]; i++) { NSIndexPath * index = [NSIndexPath indexPathForRow:i inSection:indexPath.section]; [array addObject:index]; } [self.tableView deleteRowsAtIndexPaths:array withRowAnimation:UITableViewRowAnimationFade]; } else if (indexPath.row != 0 && [_boolArray[indexPath.section] isEqualToString:@"YES"]) { //这里写原数据的点击选择处理方法 } else { _boolArray[indexPath.section] = @"YES"; for (int i=1; i<[[_products objectAtIndex:indexPath.section] count]; i++) { NSIndexPath * index = [NSIndexPath indexPathForRow:i inSection:indexPath.section]; [array addObject:index]; } [self.tableView insertRowsAtIndexPaths:array withRowAnimation:UITableViewRowAnimationFade]; } } else { //这里写搜索结果的点击处理方法 } } - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } @end
相关文章推荐
- tableView点击下拉更多的效果
- IOS开发之tableView点击行跳转并带有“显示”更多功能
- 解决界面有搜索栏时,点击TableView的空白界面,键盘不消失的问题
- tableView中的“点击加载更多”点击不到
- 【代码笔记】点击城市中的tableView跳转到旅游景点的tableView,下面会有“显示”更多。
- 【代码笔记】点击城市中的tableView跳转到旅游景点的tableView,下面会有“显示”更多。
- tableView - 点击加载更多(通知)
- tableView 的 didSelectRowAtIndexPath 第二次点击bug问题
- TableView 点击cell,改变选中cell的高度
- iOS Tableview cell 上嵌套网页并且支持图片点击预览
- ios tableView 自定义cell上的按钮点击事件不好用
- iOS 触摸 手势和tableView cell的点击冲突
- iOS点击屏幕使tableview、scrollview回到顶部
- 点击TableView任一行跳转详情页面会跳转两次的解决办法
- IOS_实现tableview向上滚动全屏效果与点击展开动画
- iOS 不同按钮点击显示不同的tableview数据
- Swift3.0 tableView/CollectionView点击事件与手势的冲突
- TableView,加载更多
- QML中tableview处理点击事件同时能保证选中行高亮和文字变化
- 点击收缩tableView