1 #import "ViewController.h" 2 #import "TuanGouModel.h" 3 #import "TuanGouTableViewCell.h" 4 #define kDeviceWi ...
1 #import "ViewController.h" 2 #import "TuanGouModel.h" 3 #import "TuanGouTableViewCell.h" 4 #define kDeviceWidth [UIScreen mainScreen].bounds.size.width 5 #define kDeviceHeight [UIScreen mainScreen].bounds.size.height 6 @interface ViewController ()<UITableViewDelegate,UITableViewDataSource,UISearchResultsUpdating> 7 { 8 UISearchController * _sscller; 9 } 10 @property(nonatomic,strong)NSMutableArray* secArrM; 11 12 @property(nonatomic,strong) NSMutableArray* tuanGouArrM; 13 14 @property(nonatomic,strong)UITableView* myTable; 15 16 @end 17 18 @implementation ViewController 19 20 - (void)viewDidLoad { 21 22 [super viewDidLoad]; 23 [self createNa]; 24 self.myTable.backgroundColor = [UIColor lightGrayColor]; 25 [self createsecB]; 26 [self setupRefresh]; 27 28 self.title = @"美食家"; 29 } 30 31 #pragma mark - 导航 32 -(void)createNa{ 33 34 UIBarButtonItem *rightItem = [[UIBarButtonItem alloc]initWithTitle:@"Edit" style:UIBarButtonItemStylePlain target:self action:@selector(tableEdit:)]; 35 self.navigationItem.rightBarButtonItem = rightItem; 36 self.title = @"美食家"; 37 38 } 39 40 // 点击导航右侧编辑按钮时,让表格可编辑 41 -(void)tableEdit:(UIBarButtonItem *) btnItem{ 42 43 // if (self.myTable.editing == NO ) { // 没有处于编辑状态,导航按钮文字为“Edit” 44 // // 点击“编辑”文字,让表格处于编辑状态,并把按钮的文字修改为“Done" 45 // self.myTable.editing = YES; 46 // 47 // }else{ 48 // // 编辑状态下,点击”Done"按钮,取消表格的编辑状态,修改导航按钮文字为"Edit" 49 // self.myTable.editing = NO; 50 // btnItem.title = @"Edit" ; 51 // self.navigationItem.rightBarButtonItems = @[btnItem]; 52 // } 53 54 } 55 56 -(void)createsecB{ 57 _sscller = [[UISearchController alloc]initWithSearchResultsController:nil]; 58 _sscller.searchResultsUpdater = self; 59 self.myTable.tableHeaderView = _sscller.searchBar; 60 61 62 } 63 -(NSMutableArray *)secArrM{ 64 65 66 if (_secArrM == nil) { 67 return _secArrM = [NSMutableArray array]; 68 69 }else{ 70 return _secArrM; 71 } 72 73 74 75 } 76 77 - (void)didReceiveMemoryWarning { 78 79 [super didReceiveMemoryWarning]; 80 81 } 82 #pragma mark - 表格懒加载 83 -(UITableView *)myTable{ 84 if (_myTable == nil) { 85 _myTable = [[UITableView alloc]initWithFrame:CGRectMake(0, 0, kDeviceWidth, kDeviceHeight) style:UITableViewStylePlain]; 86 [self.view addSubview:_myTable]; 87 88 _myTable.delegate = self; 89 _myTable.dataSource = self; 90 _myTable .separatorStyle = UITableViewCellSeparatorStyleSingleLineEtched; 91 92 } 93 return _myTable; 94 95 } 96 97 #pragma mark - 团购数据懒加载 98 -(NSMutableArray *)tuanGouArrM{ 99 100 if (_tuanGouArrM == nil) {101 _tuanGouArrM = [NSMutableArray array];102 NSString* plistPath = [[NSBundle mainBundle]pathForResource:@"tgs.plist" ofType:nil];103 NSArray* tuanArr = [NSArray arrayWithContentsOfFile:plistPath];104 105 for (NSDictionary* dict in tuanArr) {106 TuanGouModel* model =[[TuanGouModel alloc]initWithDict:dict];107 [_tuanGouArrM addObject:model];108 }109 }110 return _tuanGouArrM;111 }112 113 #pragma mark - 数据源协议114 -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{115 if ( _sscller.active ) { //搜索结果表格116 return self.secArrM.count;117 }118 119 else{120 return self.tuanGouArrM.count;121 122 }123 }124 125 -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{126 127 //注册128 [tableView registerClass:[TuanGouTableViewCell class] forCellReuseIdentifier:@"tuanCell"];129 //重置130 TuanGouTableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:@"tuanCell"forIndexPath:indexPath];131 cell.backgroundColor = [UIColor yellowColor];132 // 选中风格133 cell.selectionStyle = UITableViewCellSelectionStyleNone;134 if( !_sscller.active ){135 cell.tuanGouModel = self.tuanGouArrM[indexPath.row];136 }else{ //搜索结果137 cell.tuanGouModel = self.secArrM[indexPath.row];138 }139 140 141 return cell;142 }143 #pragma mark - TableV协议144 145 -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{146 147 return 80;148 }149 150 -(void)updateSearchResultsForSearchController:(UISearchController *)searchController{151 152 [self.secArrM removeAllObjects];153 for (int j = 0; j < _tuanGouArrM.count; j++) {154 TuanGouModel* model =[[TuanGouModel alloc]init];155 model = _tuanGouArrM[j];156 if ([model.title isEqualToString: _sscller.searchBar.text]) {157 [self.secArrM addObject: model];158 }159 }160 161 [self.myTable reloadData];162 }163 164 165 //允许Menu菜单166 -(BOOL)tableView:(UITableView *)tableView shouldShowMenuForRowAtIndexPath:(NSIndexPath *)indexPath167 {168 return YES;169 }170 171 //每个cell都可以点击出现Menu菜单172 -(BOOL)tableView:(UITableView *)tableView canPerformAction:(SEL)action forRowAtIndexPath:(NSIndexPath *)indexPath withSender:(id)sender173 {174 return YES;175 176 }177 -(void)tableView:(UITableView *)tableView performAction:(SEL)action forRowAtIndexPath:(NSIndexPath *)indexPath withSender:(id)sender{178 179 NSLog(@"长按");180 181 if (action ==@selector(copy:)) {182 183 NSLog(@"copy");184 185 }186 if (action ==@selector(cut:)) {187 NSLog(@"cut");188 189 }190 191 if (action ==@selector(paste:)) {192 193 194 NSLog(@"paste");195 }196 197 if (action ==@selector(selectAll:)) {198 199 200 NSLog(@"selectAll");201 }202 203 204 }205 //上拉加载206 -(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{207 if (indexPath.row == self.tuanGouArrM.count - 1) {208 NSLog(@"最后一行");209 210 TuanGouModel* model =[[TuanGouModel alloc]init];211 model = _tuanGouArrM[arc4random()%12];212 [_tuanGouArrM addObject:model];213 [self.myTable reloadData];214 215 }216 }217 218 //下拉刷新219 -(void)setupRefresh220 {221 //1.添加刷新控件222 UIRefreshControl *control=[[UIRefreshControl alloc]init];223 [control addTarget:self action:@selector(refreshStateChange:) forControlEvents:UIControlEventValueChanged];224 [self.myTable addSubview:control];225 226 //2.马上进入刷新状态,并不会触发UIControlEventValueChanged事件227 [control beginRefreshing];228 229 // 3.加载数据230 [self refreshStateChange:control];231 }232 233 234 /**235 * UIRefreshControl进入刷新状态:加载最新的数据236 */237 -(void)refreshStateChange:(UIRefreshControl *)control238 {239 TuanGouModel* model =[[TuanGouModel alloc]init];240 model = _tuanGouArrM[arc4random()%12];241 [_tuanGouArrM insertObject:model atIndex:0];242 [self.myTable reloadData];243 244 NSLog(@"第一行");245 [control endRefreshing];246 247 }248 249 //指示是否允许高亮显示选中的行250 - (BOOL)tableView:(UITableView *)tableView shouldHighlightRowAtIndexPath:(NSIndexPath *)indexPath{251 252 return YES;253 }254 255 //选中某行时执行256 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{257 NSLog(@"selected: %ld, row:%ld", indexPath.section, indexPath.row);258 }259 //取消选中时执行,这个方法常在表格允许多选时调用执行260 - (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath{261 NSLog(@"Deselected: %ld, row:%ld", indexPath.section, indexPath.row);262 }
原标题:UITableView与UISearchController搜索及上拉加载,下拉刷新
关键词:ie
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:
admin#shaoqun.com
(#换成@)。