在ViewController文件中创建添加地址界面:

@property(nonatomic,strong)UILabel *selectAreaLabel;//地区显示
@property(nonatomic,strong)UITextField *nameTextF;//收货人
@property(nonatomic,strong)UITextField *phoneTextF;//联系方式
@property(nonatomic,strong)UITextField *addressTextF;//详细地址
@property(nonatomic,copy)NSString *switchStr;//选择按钮值
@property(nonatomic,strong)SelectAreaView *selectView;//选择地区视图
@property(nonatomic,strong)UIView *smallBgView;//选择地区下方白色区域
@property(nonatomic,strong)NSMutableArray *dataArray1;//地址列表数据

@property(nonatomic,strong)NSMutableArray *areaInfoArray;//返回地址相关信息

在数据请求成功后,添加半透明背景,添加可选择的地区列表:

if (success)
        {
            NSArray *itemArray = [[resultDic[@"ITEMS"] reverseObjectEnumerator] allObjects];
            for (NSDictionary *dic in itemArray)
            {
                [_dataArray1 addObject:dic];
            }
            _smallBgView = [[UIView alloc] initWithFrame:CGRectMake(0, f_Device_h, f_Device_w, f_Device_h)];
            _smallBgView.backgroundColor = [UIColor darkGrayColor];
            _smallBgView.alpha = 0.8;
            [self.view addSubview:_smallBgView];
            _selectView = [[SelectAreaView alloc] initWithProvinceList:CGRectMake(0, f_Device_h, f_Device_w, f_Device_h/3*2) dataArray:_dataArray1];
            [self.view addSubview:_selectView];

[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(downSmallBgView:) name:@"downSmallBgV" object:nil];
        }

添加一个通知实现当地区选择完成落下来后,执行的方法

#pragma mark --- 接收到通知
-(void)downSmallBgView:(NSNotification *)notifi
{
    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:0.5];
    _smallBgView.frame = CGRectMake(0, f_Device_h, f_Device_w, f_Device_h);
    _selectView.frame = CGRectMake(0, f_Device_h, f_Device_w, f_Device_h/3*2);
    [UIView commitAnimations];
    
    NSDictionary *dic = [notifi userInfo];
    _areaInfoArray = [NSMutableArray arrayWithArray:dic[@"areaArray"]];
    if (_areaInfoArray.count > 0)
    {
        NSMutableString *muStr = [NSMutableString new];
        for (NSDictionary *areaDic in _areaInfoArray)
        {
            NSString *nameStr = areaDic[@"adName"];
            if (nameStr.length >0)
            {
                [muStr appendString:nameStr];
            }
        }
        _selectAreaLabel.text = muStr;
    }
    else
    {
        _selectAreaLabel.text = @"无";
    }
}

自定义一个选择视图

//初始化视图方法
-(id)initWithProvinceList:(CGRect)frame dataArray:(NSMutableArray *)aDataArray
{
    self = [super initWithFrame:frame];
    if (self)
    {
        self.backgroundColor = [UIColor whiteColor];
        self.itemDic = @{@"adCode":@"",@"adName":@"",@"id":@"",@"parentId":@""};
        self.areaMuArray = [NSMutableArray arrayWithObjects:_itemDic,_itemDic,_itemDic, nil];
        self.dataArray1 = [NSMutableArray arrayWithArray: aDataArray];
        self.dataArray2 = [NSMutableArray new];
        self.dataArray3 = [NSMutableArray new];
        
        UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, f_Device_w, 40)];
        titleLabel.text = @"选择地区";
        titleLabel.textColor = [UIColor darkGrayColor];
        titleLabel.textAlignment = NSTextAlignmentCenter;
        titleLabel.font = [UIFont systemFontOfSize:15];
        [self addSubview:titleLabel];
        
        UIButton *closeBtn = [UIButton buttonWithType:UIButtonTypeCustom];
        closeBtn.frame = CGRectMake(f_Device_w-40, 5, 30, 30);
        [closeBtn setBackgroundImage:[UIImage imageNamed:@"close.png"] forState:UIControlStateNormal];
        [self addSubview:closeBtn];
        [closeBtn addTarget:self action:@selector(closeBtnClick:) forControlEvents:UIControlEventTouchUpInside];
        
        //省市区按钮
        for (int i = 0; i < 3; i ++)
        {
            UIButton *sBtn = [UIButton buttonWithType:UIButtonTypeCustom];
            sBtn.frame = CGRectMake(20+50*i, 45, 50, 29);
            if (i == 0)
            {
                [sBtn setTitle:@"请选择" forState:UIControlStateNormal];
            }
            sBtn.titleLabel.font = [UIFont systemFontOfSize:13];
            sBtn.titleLabel.adjustsFontSizeToFitWidth = YES;
            [sBtn setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
            sBtn.tag = i+10;
            [sBtn addTarget:self action:@selector(selectBtnClick:) forControlEvents:UIControlEventTouchUpInside];
            [self addSubview:sBtn];
        }
        
        //分割
        UIView *lineView = [[UIView alloc] initWithFrame:CGRectMake(0, 74, f_Device_w, 1)];
        lineView.backgroundColor = [UIColor lightGrayColor];
        [self addSubview:lineView];
        
        _scrollV = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 75, f_Device_w, f_Device_h-f_Device_h/3-75)];
        _scrollV.showsHorizontalScrollIndicator = NO;
        _scrollV.pagingEnabled = YES;
        [self addSubview:_scrollV];
        
        for (int i = 0; i < 3; i ++)
        {
            UITableView *tableViewW = [[UITableView alloc] initWithFrame:CGRectMake(f_Device_w*i, 0, f_Device_w, f_Device_h-f_Device_h/3-75) style:UITableViewStylePlain];
            tableViewW.delegate = self;
            tableViewW.dataSource = self;
            tableViewW.rowHeight = 30;
            tableViewW.tag = i+1;
            tableViewW.separatorStyle = UITableViewCellSeparatorStyleNone;
            [_scrollV addSubview:tableViewW];
        }
        
    }
    return self;
}

当选择地区后,执行的方法

#pragma mark --- 选中后执行方法
//参数说明:1:上一个表格数组,2:点击的是第几行数据,3:标题按钮的tag值,4:滑动视图有几个f_Device_w,5:下一个表格数组
-(void)showSelectViewArray1:(NSMutableArray *)aDataArray1 indexPathRow:(int)aRow buttonTag1:(int)aTag1 xPoint:(int)aXi dataArray2:(NSMutableArray *)aDataArray2
{
    NSDictionary *dic = [NSDictionary dictionaryWithDictionary:aDataArray1[aRow]];
    UIButton *buttonN1 = (UIButton *)[self viewWithTag:aTag1];
    [buttonN1 setTitle:dic[@"adName"] forState:UIControlStateNormal];
    [buttonN1 setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
    
    [_areaMuArray replaceObjectAtIndex:aXi-2 withObject:dic];
    
    [self cityListHttpRequestIdStr:dic[@"id"] dataArray2:aDataArray2 buttonTag:aTag1 tableViewTag:aXi];
}
#pragma mark --- 市县区数据请求
//参数说明:1:上一个表格数组中的id,2:下一个表格数组,3:标题按钮tag值,4:tableView的tag值
-(void)cityListHttpRequestIdStr:(NSString *)parentIdStr dataArray2:(NSMutableArray *)aDataArray2 buttonTag:(int)btnTag tableViewTag:(int)aTag

效果图:

    

仿京东商城选择地区样式详细讲解源码Demo:http://download.csdn.net/detail/hbblzjy/9603813

iOS模仿京东商城中的选择地区样式相关推荐

  1. 【vue】vue商城设计-模仿京东商城

    1.引言 设计结课作业,课程设计无处下手,网页要求的总数量太多?没有合适的模板?数据库,java,python,vue,html作业复杂工程量过大?毕设毫无头绪等等一系列问题.你想要解决的问题,在微信 ...

  2. python工具箱查询手册书籍京东_十二. 项目实战:爬取京东商城中的书籍信息

    爬取网址:https://search.jd.com/Search?keyword=python 爬取信息:书名,价格,出版社,日期 爬取方式:scrapy框架 + splash 存储方式:csv 页 ...

  3. 爬取京东商城中的书籍信息

    京东页面搜索python | 每一页有60本书,但开始只有30页,当鼠标滚轮滚到下方时,后30本才由JavaScript加载 Chrome F12 在console中 在console中继续实验,用d ...

  4. ElastSearch整合SpringBoot模仿京东商城实现关键字高亮显示

    前提:下载Elasticsearch服务并开启,使用SpringBoot集成Elasticsearch客户端 用到的技术:Springboot+Vue+Thymeleaf+Elasticsearch ...

  5. 利用Eclipse-Python简单爬取京东商城书籍信息进行可视化

    [实验目的] 熟悉从网上爬取数据到将数据进行可视化的全部流程,通过实例了解并掌握每个过程. 了解爬虫爬取数据的原理,并选择一种语言编程,将数据获取到数据库. 熟练使用 eclipse 中 Java 语 ...

  6. 京东商城京东白条使用详解 图解京东白条的使用方法

    京东商城京东白条使用详解,最近京东推出的京东白条服务,非常不错,目前正在内测中,也有部分用户被邀请京东白条的测试了.就京东白条的使用,小编请有资格付款的朋友帮接截了点图,各位可以看一下. 1.首先如果 ...

  7. 京东商城之手机购买推荐

    这几年各大厂商发布了多款炫酷手机上市,想想本人的手机已经用了两年多,也该光荣退役了.作为一个理性派,发挥我一如既往的聪明智慧和研究精神,秉着绝不被厂家的花式宣传所蒙骗.绝不被商家的虚假折扣所忽悠的原则 ...

  8. 京东商城(HTML和CSS实现京东商城网站)

    学习京东商城(HTML和CSS实现京东商城网站),本文实现该系统的功能截图,HTML和CSS部分关键语句,系统功能图等供大家学习参考 本页面模仿京东商城 本系统完全模仿京东商城写的页面,页面功能齐全 ...

  9. Bootstrap练习:京东商城轮播图

    练习:京东商城的一个轮播图效果,可以自动切换图片和点击切换图片,主要运用了Bootstrap的Carousel插件与js插件等知识内容,练习源文件下面有下载链接. 目录 前言 一.练习 1.目标图: ...

最新文章

  1. LeetCode简单题之复写零
  2. 【Android】解析Json数据
  3. MVC控制器传递多个实体类集合到视图的方案总结
  4. Array | 74. Search a 2D Matrix
  5. 解决loaded more than 1 DLL from .libs和No metadata found in lib\site-packages两个错误
  6. aix 超过一天的文件_Aix 6.1下 /dev/null 21 文件过大导致根目录爆满
  7. 信息学奥赛C++语言:约瑟夫问题
  8. My Ruby Blog
  9. 1分钟玩转Kafka
  10. GIS中的基本概念收集
  11. flash服务器停止响应,Adobe Flash Player已经在Windows 10上停止工作
  12. 计算机网络七层结构与功能,网络七层结构介绍
  13. java连接redis设置密码_jedis设置密码连接Redis
  14. java判断线与矩形相交_判断任意多边形与矩形的相交(线段与矩形相交或线段与线段相交)...
  15. Bash shell学习笔记(五)
  16. 实验5 卷积神经网络实验
  17. onedrive教育版登录不上
  18. mock详细教程入门这一篇就够了(*)
  19. c语言中换行符的ans2码,二级C语言复习
  20. RTX 3080被炒到原价7倍,最高卖5000美元,英伟达官方道歉:将打击黄牛抢购

热门文章

  1. 技巧|使用Chatgpt练习多种类型口语
  2. 安信可模组DIY项目分享 | 基于ESP-C3-12F的物联网时钟的总结回顾
  3. 论述:为什么选择PM
  4. ZipOutputStream 生成压缩文件,用winrar打开后报”不可预料的压缩文件末端”错误
  5. 渗透测试服务 甲方公司OA网站系统漏洞测试
  6. 蒙特卡罗方法 MCMC
  7. 胸大肌(05):仰卧飞鸟
  8. mysql字符排序规则utf8mb4_0900_ai_ci修改为utf8_general_ci
  9. Task Host Window电脑关机提示怎么取消?
  10. 关于sudo dpkg-divert --local --rename --add /sbin/initctl导致的开机无图标解决方法