以下为相关代码,仅供参考:
#import <UIKit/UIKit.h> typedef void (^ReturnCityBlock)(NSString *string,int provinceIndex,int cityIndex); @interface PickerBgView : UIView<UIPickerViewDelegate, UIPickerViewDataSource> @property (weak, nonatomic) IBOutlet UIButton *doneBtn; @property (weak, nonatomic) IBOutlet UIButton *closeBtn; @property (weak, nonatomic) IBOutlet UIPickerView *pickerView; @property (weak, nonatomic) IBOutlet UIView *clearView; @property (nonatomic, copy)ReturnCityBlock returnBlock; @property (nonatomic, assign)int cityIndex;//城市 @property (nonatomic, assign)int provinceIndex;//省份 - (id)initWithReturnBlock:(ReturnCityBlock)block; - (void)showInView:(UIView *)view; - (void)cancelPicker; @end
#import "PickerBgView.h" @implementation PickerBgView{ NSArray *provinces, *cities; NSString *_state; NSString *_city; } - (id)initWithReturnBlock:(ReturnCityBlock)block{ self = [[[NSBundle mainBundle] loadNibNamed:@"PickerBgView" owner:self options:nil] objectAtIndex:0]; if (self) { self.pickerView.delegate = self; self.pickerView.dataSource = self; provinces = [[NSArray alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"city.plist" ofType:nil]]; [self.closeBtn addTarget:self action:@selector(cancelPickerViewAction:) forControlEvents:UIControlEventTouchUpInside]; self.returnBlock = block; UITapGestureRecognizer *closeTap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(cancelGestureAction)]; [self.clearView addGestureRecognizer:closeTap]; [self.doneBtn addTarget:self action:@selector(doneBtnAction) forControlEvents:UIControlEventTouchUpInside]; } return self; } #pragma mark - PickerView lifecycle - (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView { return 2; } - (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component { switch (component) { case 0: return [provinces count]; break; case 1: return [cities count]; break; default: return 0; break; } } - (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component { if (component == 0) { return [[provinces objectAtIndex:row] objectForKey:@"state"]; }else{ return [cities objectAtIndex:row]; } } - (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component { switch (component) { case 0: _cityIndex = 0; cities = [[provinces objectAtIndex:row] objectForKey:@"cities"]; [self.pickerView selectRow:_cityIndex inComponent:1 animated:YES]; [self.pickerView reloadComponent:1]; _state = [[provinces objectAtIndex:row] objectForKey:@"state"]; _city = [cities objectAtIndex:_cityIndex]; _provinceIndex = (int)row; break; case 1: _city = [cities objectAtIndex:row]; _cityIndex = (int)row; break; default: break; } } - (void)doneBtnAction{ self.returnBlock([NSString stringWithFormat:@"%@%@",_state,_city],_provinceIndex,_cityIndex); [self cancelPicker]; } #pragma mark - animation - (void)showInView:(UIView *) view { self.frame = CGRectMake(0, ScreenHeight, ScreenWidth, ScreenHeight); //默认已选中省份城市 cities = [[provinces objectAtIndex:_provinceIndex] objectForKey:@"cities"]; _state = [[provinces objectAtIndex:_provinceIndex] objectForKey:@"state"]; _city = [cities objectAtIndex:_cityIndex]; [self.pickerView selectRow:_provinceIndex inComponent:0 animated:YES]; [self.pickerView selectRow:_cityIndex inComponent:1 animated:YES]; [self.pickerView reloadAllComponents]; [view addSubview:self]; [UIView animateWithDuration:0.3 animations:^{ self.frame = CGRectMake(0, 0, ScreenWidth, ScreenHeight); }]; } - (void)cancelPicker { [UIView animateWithDuration:0.3 animations:^{ self.frame = CGRectMake(0, self.frame.origin.y+self.frame.size.height, self.frame.size.width, self.frame.size.height); } completion:^(BOOL finished){ [self removeFromSuperview]; }]; } - (void)cancelGestureAction { [self cancelPicker]; } #pragma mark - cancel和ok -(void)cancelPickerViewAction:(UIButton *)sender { [self cancelPicker]; } @end
相关推荐
然后,当用户在第一级选择省份时,第二级的`UIPickerView`会自动更新为对应省份的城市。 自定义封装`CityPickerView`的过程包括以下步骤: 1. 创建一个新的UIView子类,如`CityPickerView`,并添加两个`...
在iOS开发中,UIPickerView 是一个常用的组件,用于展示一系列可滚动的选择项,比如日期选择、时间选择或者像省份城市联动这样的分类选择。在这个"省份城市联动Demo"项目中,我们将深入探讨如何利用UIPickerView来...
在这个场景下,`plist`文件很可能包含了中国所有省份、城市和区县的层次结构数据。每个省下面有对应的市,每个市下面有对应的区县,这种结构使得数据易于管理和检索。开发者通常会使用`NSDictionary`或者`NSArray`来...
在本教程中,我们将详细讲解如何使用UIPickerView 实现一个城市选择器,该选择器分为两列,第一列显示省份,第二列显示对应省份的城市。我们将数据存储在一个名为“cityData”的plist文件中。 首先,我们需要了解...
UIPickerView-Province-cityUIPickerView的简单应用——省份/城市选择的实现实现效果如图,左边为省份选择,右边选择省份对应的城市数据plist形式如图UIPickerView的实现重要还是代理方法的实现
例如,你可以创建一个嵌套字典,键为省份,值为包含城市字典的数组,城市字典的键为城市,值为包含县数组的字典。 5. **实现选择逻辑** 当用户滚动 `UIPickerView` 时,你可以根据当前选择的省、市、县更新对应的...
首先,你需要准备完整的全国省份、城市和区县的数据。这些数据可以存储在数组中,或者通过网络API动态获取。每个数据项通常包含id和name,例如: ```swift struct Area { let id: String let name: String } ``` ...
4. **联动效果**:当用户在第一列(省份)选择一项时,通过调用UIPickerView的reloadComponent(:)方法刷新第二列(城市),并根据省份选择更新城市列表。这需要在代理方法pickerView(_:didSelectRow:inComponent:)中...
在给定的标题“ios UIPickerView 中国省市区选择器”中,我们可以推断出这个项目是关于如何使用`UIPickerView` 创建一个能够帮助用户选择中国省份、城市、区县的组件。这种选择器在本地化应用或者地址输入场景中非常...
这个模型可能包含省份、城市、区县和街道级别的数据,并且已经组织成易于查询和操作的结构。 3. **数据绑定**:控件需要与数据模型进行交互,以便当用户滚动时更新显示的信息。Swift中,这可以通过代理方法实现,如...
例如,第一个PickerView选择省份,第二个PickerView则显示对应省份的城市。这种情况下,你需要在DataSource的`pickerView(_:titleForRow:)`方法中动态更新第二个PickerView的选项。 2. **层级数据**:如果数据结构...
在这个场景中,标题提到的"ios 使用UIPickerView时省市区全文件 .plist"表明我们正在处理一个与UIPickerView相关的数据结构,该结构以.plist(Property List)格式存储,主要用于展示中国各省份、城市和区县的全量...
在这个“ios-省市区选择器(UIPickerView)”项目中,开发者创建了一个自定义的PickerView,专门用于选择中国的省份、城市和区县。这个组件对于需要用户输入地址信息的应用来说非常实用。 首先,UIPickerView的基本...
这个源码库通常用于实现用户在应用中选择省份、城市的功能,例如地址输入或者地理位置筛选。 描述中提到的“sqlite3,UIPickerView”是iOS开发中的两个关键组件。sqlite3是苹果官方支持的轻量级关系型数据库,用于...
本篇文章将深入探讨`CityPicker`,它是`UIPickerView`的一个具体应用,实现了二级下拉联动的效果,常见于城市选择场景,如省份与城市的选择。在这个功能中,用户先选择省份,然后根据所选省份加载相应的城市列表。...
在这种模式下,你可以创建一个CityViewModel,它包含省份和城市的列表,并提供选取省份后的城市更新逻辑。ViewModel与View(此处为UIPickerView)通过KVO(Key-Value Observing)或者Swift的 Combine 框架进行数据...
在iOS应用开发中,UIPickerView可以用来创建滚动列表,如国家、省份或城市的选择。它允许用户通过滚动视图来选取一个或多个值。以下是一些关于如何使用UIPickerView实现“省份滚轮代码”的关键知识点: 1. **...
本篇将深入探讨如何使用Swift和UIPickerView构建一个三级(甚至更多级)的城市选择器。 首先,我们需要了解UIPickerView的基本概念。UIPickerView是iOS中的一个滚动选择视图,用户可以通过滚动选取列表中的某一值。...
在这种场景下,SQLite数据库可以用来存储大量的城市数据,而UIPickerView则作为一个理想的用户界面元素,允许用户滚动浏览并选择城市。下面将详细阐述如何结合SQLite和UIPickerView实现中国城市的选择功能。 首先,...