UISearchBar 的使用



//
//  AddDiseaseSubjectViewController.m
//  com.yx129.yxClientDoctor3
//
//  Created by yx on 14/12/4.
//  Copyright (c) 2014年 Guangzhou Yixiang Internet Technology Development Limited. All rights reserved.
//

#define SearchNumber  15

#define RequestTag_NormalDisease  401
#define RequestTag_SearchDisease  402

#import "MJRefresh.h"
#import "AddDiseaseSubjectVC.h"
#import "AddSubjectVCCell.h"
//#import "AFNetworking.h"


@interface AddDiseaseSubjectVC ()<MJRefreshBaseViewDelegate,ASIHTTPRequestDelegate>

@end

@implementation AddDiseaseSubjectVC
{
    NSMutableDictionary *_postDic;
    NSMutableArray *_normalDiseaseArray; //
    NSMutableArray *_diseaseModelsArray; //
    
    //NSMutableArray *_MyDataSourceId;//网络请求到的数据2 状态值
    
    UITableView *_MyTableView;//表格视图
    UISearchBar *_MySearchBar;//搜索栏
    
    //MBProgressHUDManager *HUDManager;
    MJRefreshFooterView *_footerView;
    
    ASIFormDataRequest * _searchDiseaseRequest;
    //NSString *searchWords;
    NSString *_oldSearchStr;
}

-(id)init
{
    if (self = [super init]) {
        
        _normalDiseaseArray=[[NSMutableArray alloc]init];//状态值
        _diseaseModelsArray=[[NSMutableArray alloc]init];
        
    }
    return self;
}


- (void)viewDidLoad
{
    [super viewDidLoad];
    
    [_navView setTitle:@"添加疾病" type:NavTypeBackOnly];
    self.view.backgroundColor=kColorHex(@"eeeeee");

    
    //初始化指示器
    //HUDManager = [[MBProgressHUDManager alloc] initWithView:self.navigationController.view];
    
    [self _initView];
    
    [self initNormalData];
    
}

-(void)_initView
{
    
    _MySearchBar=[[UISearchBar alloc]init];
    _MySearchBar.layer.backgroundColor = [UIColor whiteColor].CGColor;
    //[_MySearchBar setBoarderNone];
    //_MySearchBar.backgroundColor=[UIColor whiteColor];
    _MySearchBar.frame=CGRectMake(0,_navView.frame.origin.y+_navView.frame.size.height, self.view.frame.size.width, 50);
    _MySearchBar.placeholder=@"输入疾病名称,查找并添加";
    _MySearchBar.delegate=self;
    //_MySearchBar.showsCancelButton=YES;//显示取消按钮
    
    [self.view addSubview:_MySearchBar];
    
    _MyTableView=[[UITableView alloc]initWithFrame:CGRectMake(0, CGRectGetMaxY(_MySearchBar.frame) +1, self.view.frame.size.width, CGRectGetHeight(self.view.frame) - CGRectGetMaxY(_MySearchBar.frame)) style:UITableViewStylePlain];
    _MyTableView.dataSource=self;
    _MyTableView.delegate=self;
    _MyTableView.rowHeight=50;
    _MyTableView.separatorStyle=UITableViewCellSeparatorStyleNone;
    [self.view addSubview:_MyTableView];
    
    _footerView = [[MJRefreshFooterView alloc] initWithScrollView:_MyTableView] ;
    _footerView.delegate = self;
    _footerView.hidden = YES;
}

-(void)viewDidDisappear:(BOOL)animated
{
    [super viewDidDisappear:YES];
    
    [_footerView free];
}

-(void)onClickLeftBtn
{
    [self.navigationController popViewControllerAnimated:YES];
    
}

-(void)initNormalData
{
    [self.hudManager With_label:@"请稍后..." duration:10];
    [UIApplication sharedApplication].networkActivityIndicatorVisible = YES;

    NSURL * url = [NSURL URLWithString:entranceURL];

    if ([self.asiRequest isExecuting]) {
        return;
    }
    self.asiRequest = [[ASIFormDataRequest alloc] initWithURL:url];
    [self.asiRequest setDelegate:self];
    [self.asiRequest setDidFinishSelector:@selector(requestDidFinished:)];
    [self.asiRequest setDidFailSelector:@selector(requestDidFailed:)];
    [self.asiRequest addPostValue:@"Sourceclient" forKey:@"module"];
    [self.asiRequest addPostValue:@"Doctor" forKey:@"controller"];
    [self.asiRequest addPostValue:@"diseaseList" forKey:@"action"];
    [self.asiRequest addPostValue:kSecret forKey:@"secret"];
    [self.asiRequest addPostValue:kSharedDoctor.token_key forKey:@"token_key"];
    [self.asiRequest addPostValue:kSharedDoctor.acc_id forKey:@"acc_id"];
    
    [self.asiRequest setRequestMethod:@"GET"];
    [self.asiRequest setTimeOutSeconds:10];
    [self.asiRequest startAsynchronous];
    self.asiRequest.tag = RequestTag_NormalDisease;
    
}

-(void)loadDataWithKeyWord:(NSString *)keyWord AndPage:(int)page
{
    [UIApplication sharedApplication].networkActivityIndicatorVisible = YES;

    if ([_searchDiseaseRequest isExecuting]) {
        return;
    }
    
    NSURL * url = [NSURL URLWithString:entranceURL];
    
    ASIFormDataRequest* searchDiseaseRequest = [[ASIFormDataRequest alloc] initWithURL:url];
    [searchDiseaseRequest setDelegate:self];
    [searchDiseaseRequest setDidFinishSelector:@selector(requestDidFinished:)];
    [searchDiseaseRequest setDidFailSelector:@selector(requestDidFailed:)];
    [searchDiseaseRequest addPostValue:@"Sourceclient" forKey:@"module"];
    [searchDiseaseRequest addPostValue:@"Doctor" forKey:@"controller"];
    [searchDiseaseRequest addPostValue:@"diseaseList" forKey:@"action"];
    [searchDiseaseRequest addPostValue:kSecret forKey:@"secret"];
    [searchDiseaseRequest addPostValue:kSharedDoctor.token_key forKey:@"token_key"];
    [searchDiseaseRequest addPostValue:kSharedDoctor.acc_id forKey:@"acc_id"];
    
    [searchDiseaseRequest setRequestMethod:@"GET"];
    [searchDiseaseRequest setTimeOutSeconds:10];
    
    NSString * strCurrPage = [NSString stringWithFormat:@"%d", page];
    NSString * strPageCount = [NSString stringWithFormat:@"%d", SearchNumber];
    [searchDiseaseRequest setPostValue:strCurrPage forKey:@"curr_page"];
    [searchDiseaseRequest setPostValue:strPageCount forKey:@"page_count"];
    [searchDiseaseRequest addPostValue:keyWord forKey:@"keyword"];
    searchDiseaseRequest.tag = RequestTag_SearchDisease;

    [searchDiseaseRequest startAsynchronous];
}

-(NSMutableString *)revertArray:(NSArray *)array
{
    NSMutableString *str = nil;
    
    for (NSDictionary *dic in array) {
        NSArray *keyname = [dic allKeys];
        NSArray *valuename = [dic allValues];
        [str appendFormat: @"%@=%@&",keyname[0],valuename[0] ];
    }

    return str;
}


//数据请求成功
-(void)requestDidFinished:(ASIFormDataRequest *)request
{
    //[request printParams];
    
    [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
    [self.hudManager hide];
    
    NSDictionary *objDic = [NSJSONSerialization JSONObjectWithData:request.responseData options:NSJSONReadingMutableContainers error:nil];

    int code = [[objDic objectForKey:@"code"] intValue];
    
    //数据请求成功
    if (40000 == code)
    {
        if (![[objDic objectForKey:@"list"] isKindOfClass:[NSNull class]]) {
            
            for (NSDictionary *dic in [objDic objectForKey:@"list"]) {
                Disease *disease = [[Disease alloc] initWithDict:dic];
                [_diseaseModelsArray addObject:disease];
            }
            
        }
        
        [_MyTableView reloadData];
        
        
    }
    
}


-(void)requestDidFailed:(ASIFormDataRequest *)request
{
    [self.hudManager hide];
    [MBProgressHUDManager showText:@"请求失败,请稍后再试..."];
    //关闭网络
    [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
    
    NSData *responseData = [request responseData];
    NSString* returnString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
    NSLog(@"请求失败 returnString:%@",returnString);
    
    
}


#pragma mark delegate method
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section //行数
{
    return _diseaseModelsArray.count;
}

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *cellID=@"cellID";
    AddSubjectVCCell *cell=[tableView dequeueReusableCellWithIdentifier:cellID];
    if(cell==nil)
    {
        cell=[[AddSubjectVCCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellID];
        
    }
    
    UIImageView *imgView = [[UIImageView alloc] initWithFrame:cell.bounds];
    imgView.image = [UIImage imageNamed:@"cellBgWhite"];
    cell.backgroundView = imgView;
    cell.selectionStyle=UITableViewCellSelectionStyleNone;//选中风格
    
    if (_diseaseModelsArray.count >indexPath.row) {
        
        Disease *cellDisease = [_diseaseModelsArray objectAtIndex:indexPath.row];
        cell.subjectLabel.text = cellDisease.disease_name;
        
        BOOL isAdded = NO;
        for (Disease *disease in kSharedDoctor.disease_list) {
            if ([cellDisease.disease_id isEqualToString:disease.disease_id]) {
                isAdded = YES;
                break ;
            }
        }
        
        [cell hideAddButton:isAdded];
    }
    
    
    return cell;
}


-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    
    AddSubjectVCCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    //BOOL ishidden = cell.addButton.isHidden;
    if (cell.addButton.isHidden) {
        return;
    }
    
    [cell hideAddButton:YES];
    
    Disease *disease = [_diseaseModelsArray objectAtIndex:indexPath.row];
    [self addDiseaseAction:disease];
}

-(void)addDiseaseAction:(Disease *)disease
{
    NSMutableDictionary *postDic =[[NSMutableDictionary alloc] init];
    //NSUserDefaults *user = [NSUserDefaults standardUserDefaults];
    [postDic setObject:@"Sourceclient" forKey:@"module"];
    [postDic setObject:@"Doctor" forKey:@"controller"];
    [postDic setObject:@"goodAtAddDel" forKey:@"action"];    //diseaseList,doctor
    [postDic setObject:kSecret forKey:@"secret"];
    [postDic setObject:kSharedDoctor.acc_id forKey:@"acc_id"];
    [postDic setObject:kSharedDoctor.token_key forKey:@"token_key"];
    [postDic setObject:disease.disease_id forKey:@"disease_add_list"];
    
    YXHttpRequest * request = [[YXHttpRequest alloc]initWithPath:entranceURL params:postDic requestType:kTypePost completion:^(NSDictionary *result, NSError * error){
        
        [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
        
        if (!error) {
            
            NSString *msg = [result objectForKey:@"msg"];
            [MBProgressHUDManager showText:msg];
            [kSharedDoctor.disease_list addObject:disease];
            
        }else{
            [request showErrorMessage];
        }
    }];
    
    
}

-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    [_MySearchBar resignFirstResponder];
}



#pragma mark UISearchBarDelegate method

- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText  // called when text changes
{
    if (![searchText isEqualToString:_oldSearchStr]) {
        
        [_diseaseModelsArray removeAllObjects];
        [self loadDataWithKeyWord:searchText AndPage:1 ];
        
        _oldSearchStr = searchText;
        
        _footerView.hidden = _diseaseModelsArray.count < SearchNumber ? YES:NO;
        
    }
    
//    static int i = 1;
//    
//    if (i %2 == 0) {
//        
//        [_diseaseModelsArray removeAllObjects];
//        
//        [self loadDataWithKeyWord:searchText AndPage:1 ];
//        
//    }
//    
//    i++;
    
}

-(void)searchBarTextDidEndEditing:(UISearchBar *)searchBar
{
    
    _MySearchBar.showsCancelButton=NO;//显示取消按钮

}


-(void)searchBarCancelButtonClicked:(UISearchBar *)searchBar
{
    _MySearchBar.text=nil;
    _MySearchBar.placeholder=@"输入疾病名称,查找并添加";
    [_MySearchBar resignFirstResponder];
    _MySearchBar.showsCancelButton=NO;  //取消按钮
    
}
- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar
{
    [_MySearchBar resignFirstResponder];
    
    [_diseaseModelsArray removeAllObjects];
    [self loadDataWithKeyWord:searchBar.text AndPage:1 ];

}


- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar
{
    _MySearchBar.showsCancelButton=YES;//显示取消按钮
    
    //改变uisearchbar中的cancel按钮的文字
    //定义取消按钮
    for(id cc in [searchBar subviews])
    {
        for (UIView *view in [cc subviews])
        {
            // 遍历出来的是UINavigationButton。不知道是不是类,反正我跟不出来所以把他转成字符串再比较
            if ([NSStringFromClass(view.class) isEqualToString:@"UINavigationButton"])
            {
                
                UIButton *btn = (UIButton *)view;
                [btn setTitle:@"取消" forState:UIControlStateNormal];
                [btn setTitleColor:[UIColor darkGrayColor] forState:UIControlStateNormal];//icon_triangle_lable,btn_dl_normal
            }
            
        }
        
    }
    
}


#pragma mark - MJRefreshDelegate

-(void)refreshViewBeginRefreshing:(MJRefreshBaseView *)refreshView
{
    static int page = 2;
    
    if (page <= 3){
        [self loadDataWithKeyWord:_MySearchBar.text AndPage:page++];
    }
    
    [refreshView endRefreshing];
    
}


// called when text ends
- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

/*
#pragma mark - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    // Get the new view controller using [segue destinationViewController].
    // Pass the selected object to the new view controller.
}
*/

@end


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值