空話不多說了,直接給年夜家貼代碼了。
詳細代碼以下所示:
#import "ViewController.h" #import "TuanGouModel.h" #import "TuanGouTableViewCell.h" #define kDeviceWidth [UIScreen mainScreen].bounds.size.width #define kDeviceHeight [UIScreen mainScreen].bounds.size.height @interface ViewController ()<UITableViewDelegate,UITableViewDataSource,UISearchResultsUpdating> { UISearchController * _sscller; } @property(nonatomic,strong)NSMutableArray* secArrM; @property(nonatomic,strong) NSMutableArray* tuanGouArrM; @property(nonatomic,strong)UITableView* myTable; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; [self createNa]; self.myTable.backgroundColor = [UIColor lightGrayColor]; [self createsecB]; [self setupRefresh]; self.title = @"美食家"; } #pragma mark - 導航 -(void)createNa{ UIBarButtonItem *rightItem = [[UIBarButtonItem alloc]initWithTitle:@"Edit" style:UIBarButtonItemStylePlain target:self action:@selector(tableEdit:)]; self.navigationItem.rightBarButtonItem = rightItem; self.title = @"美食家"; } // 點擊導航右邊編纂按鈕時,讓表格可編纂 -(void)tableEdit:(UIBarButtonItem *) btnItem{ // if (self.myTable.editing == NO ) { // 沒有處於編纂狀況,導航按鈕文字為“Edit” // // 點擊“編纂”文字,讓表格處於編纂狀況,並把按鈕的文字修正為“Done" // self.myTable.editing = YES; // // }else{ // // 編纂狀況下,點擊”Done"按鈕,撤消表格的編纂狀況,修正導航按鈕文字為"Edit" // self.myTable.editing = NO; // btnItem.title = @"Edit" ; // self.navigationItem.rightBarButtonItems = @[btnItem]; // } } -(void)createsecB{ _sscller = [[UISearchController alloc]initWithSearchResultsController:nil]; _sscller.searchResultsUpdater = self; self.myTable.tableHeaderView = _sscller.searchBar; } -(NSMutableArray *)secArrM{ if (_secArrM == nil) { return _secArrM = [NSMutableArray array]; }else{ return _secArrM; } } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; } #pragma mark - 表格懶加載 -(UITableView *)myTable{ if (_myTable == nil) { _myTable = [[UITableView alloc]initWithFrame:CGRectMake(, , kDeviceWidth, kDeviceHeight) style:UITableViewStylePlain]; [self.view addSubview:_myTable]; _myTable.delegate = self; _myTable.dataSource = self; _myTable .separatorStyle = UITableViewCellSeparatorStyleSingleLineEtched; } return _myTable; } #pragma mark - 團購數據懶加載 -(NSMutableArray *)tuanGouArrM{ if (_tuanGouArrM == nil) { _tuanGouArrM = [NSMutableArray array]; NSString* plistPath = [[NSBundle mainBundle]pathForResource:@"tgs.plist" ofType:nil]; NSArray* tuanArr = [NSArray arrayWithContentsOfFile:plistPath]; for (NSDictionary* dict in tuanArr) { TuanGouModel* model =[[TuanGouModel alloc]initWithDict:dict]; [_tuanGouArrM addObject:model]; } } return _tuanGouArrM; } #pragma mark - 數據源協定 -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ if ( _sscller.active ) { //搜刮成果表格 return self.secArrM.count; } else{ return self.tuanGouArrM.count; } } -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ //注冊 [tableView registerClass:[TuanGouTableViewCell class] forCellReuseIdentifier:@"tuanCell"]; //重置 TuanGouTableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:@"tuanCell"forIndexPath:indexPath]; cell.backgroundColor = [UIColor yellowColor]; // 選中作風 cell.selectionStyle = UITableViewCellSelectionStyleNone; if( !_sscller.active ){ cell.tuanGouModel = self.tuanGouArrM[indexPath.row]; }else{ //搜刮成果 cell.tuanGouModel = self.secArrM[indexPath.row]; } return cell; } #pragma mark - TableV協定 -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{ return ; } -(void)updateSearchResultsForSearchController:(UISearchController *)searchController{ [self.secArrM removeAllObjects]; for (int j = ; j < _tuanGouArrM.count; j++) { TuanGouModel* model =[[TuanGouModel alloc]init]; model = _tuanGouArrM[j]; if ([model.title isEqualToString: _sscller.searchBar.text]) { [self.secArrM addObject: model]; } } [self.myTable reloadData]; } //許可Menu菜單 -(BOOL)tableView:(UITableView *)tableView shouldShowMenuForRowAtIndexPath:(NSIndexPath *)indexPath { return YES; } //每一個cell都可以點擊湧現Menu菜單 -(BOOL)tableView:(UITableView *)tableView canPerformAction:(SEL)action forRowAtIndexPath:(NSIndexPath *)indexPath withSender:(id)sender { return YES; } -(void)tableView:(UITableView *)tableView performAction:(SEL)action forRowAtIndexPath:(NSIndexPath *)indexPath withSender:(id)sender{ NSLog(@"長按"); if (action ==@selector(copy:)) { NSLog(@"copy"); } if (action ==@selector(cut:)) { NSLog(@"cut"); } if (action ==@selector(paste:)) { NSLog(@"paste"); } if (action ==@selector(selectAll:)) { NSLog(@"selectAll"); } } //上拉加載 -(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{ if (indexPath.row == self.tuanGouArrM.count - ) { NSLog(@"最初一行"); TuanGouModel* model =[[TuanGouModel alloc]init]; model = _tuanGouArrM[arcrandom()%]; [_tuanGouArrM addObject:model]; [self.myTable reloadData]; } } //下拉刷新 -(void)setupRefresh { //.添加刷新控件 UIRefreshControl *control=[[UIRefreshControl alloc]init]; [control addTarget:self action:@selector(refreshStateChange:) forControlEvents:UIControlEventValueChanged]; [self.myTable addSubview:control]; //.立時進入刷新狀況,其實不會觸發UIControlEventValueChanged事宜 [control beginRefreshing]; // .加載數據 [self refreshStateChange:control]; } /** * UIRefreshControl進入刷新狀況:加載最新的數據 */ -(void)refreshStateChange:(UIRefreshControl *)control { TuanGouModel* model =[[TuanGouModel alloc]init]; model = _tuanGouArrM[arcrandom()%]; [_tuanGouArrM insertObject:model atIndex:]; [self.myTable reloadData]; NSLog(@"第一行"); [control endRefreshing]; } //指導能否許可高亮顯示選中的行 - (BOOL)tableView:(UITableView *)tableView shouldHighlightRowAtIndexPath:(NSIndexPath *)indexPath{ return YES; } //選中某行時履行 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ NSLog(@"selected: %ld, row:%ld", indexPath.section, indexPath.row); } //撤消選中時履行,這個辦法常在表格許可多選時挪用履行 - (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath{ NSLog(@"Deselected: %ld, row:%ld", indexPath.section, indexPath.row); }
以上代碼是hi小編給年夜家引見的IOS開辟之UITableView與UISearchController完成搜刮及上拉加載,下拉刷新實例代碼,願望對年夜家有所贊助!
【iOS開辟之UITableView與UISearchController完成搜刮及上拉加載,下拉刷新實例代碼】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!