美团HD(5)-选择城市

 

DJSelectCityViewController.m

复制代码
#import "DJSelectCityViewController.h"
#import "DJConstantValue.h"
#import "DJCityGroup.h"
#import "MJExtension.h"


@interface DJSelectCityViewController ()<UITableViewDataSource,UITableViewDelegate,UISearchBarDelegate>

/** 城市组列表 */
@property (nonatomic,strong) NSMutableArray *cityGroups;
@property (weak, nonatomic) IBOutlet UITableView *cityTableView;

@end

@implementation DJSelectCityViewController

- (void)viewDidLoad {
    [super viewDidLoad];
 
    self.title = @"选择城市";
    // 设置右侧索引栏字体颜色
    self.cityTableView.sectionIndexColor = [UIColor blackColor];
    
    [self setupNavLeftItem];
    [self loadCityData];
    
}

- (void)setupNavLeftItem {

    UIBarButtonItem *closeItem = [UIBarButtonItem itemWithTarget:self action:@selector(close) image:@"btn_navigation_close" highlighImage:@"btn_navigation_close_hl"];
    
    self.navigationItem.leftBarButtonItem = closeItem;

}


/** 加载城市数据 */
- (void)loadCityData {
    
     self.cityGroups = [DJCityGroup mj_objectArrayWithFilename:@"cityGroups.plist"];
    
}


/** 关闭当前界面 */
- (void)close {

    [self dismissViewControllerAnimated:YES completion:nil];

}


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


#pragma mark - UITableView 数据源方法

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {

    return self.cityGroups.count;

}


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

    DJCityGroup *cityGroup =  self.cityGroups[section];
    return cityGroup.cities.count;
    
}


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *ID = @"cityGroup";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];
    if (!cell) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:ID];
    }
    DJCityGroup *cityGroup = self.cityGroups[indexPath.section];
    NSString *cityName = cityGroup.cities[indexPath.row];
    
    cell.textLabel.text = cityName;
    
    return cell;
}

#pragma mark - tableView 代理方法

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {

    DJCityGroup *cityGroup = self.cityGroups[section];
    return cityGroup.title;
    
}


- (NSArray<NSString *> *)sectionIndexTitlesForTableView:(UITableView *)tableView {

    return [self.cityGroups valueForKeyPath:@"title"];

}


#pragma mark - UISearchBar 代理方法

/** SearchBar开始编辑 */
- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar {

    // 隐藏导航栏
    [self.navigationController setNavigationBarHidden:YES animated:YES];
    

}

/** SearchBar结束编辑 */
- (void)searchBarTextDidEndEditing:(UISearchBar *)searchBar {

    // 显示导航栏
    [self.navigationController setNavigationBarHidden:NO animated:YES];


}

@end
复制代码

最终效果:

 



如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。
posted @   夜行过客  阅读(358)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
点击右上角即可分享
微信分享提示