亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

IOS開發之自制城市選擇器(省份+城市+區/縣城)(storyboard版)

2019-11-14 18:52:52
字體:
來源:轉載
供稿:網友

第一步:新建single工程CitySelectedDemo

第二步:導入資源area.plist(千萬勾選copy選項,后面附area.plist文件資源)

第三步:設計mian.storyboard

      ——》拖拽UITextField控件(運行后點擊此輸入框會彈出選擇器,選擇我們想要的城市地址后結果顯示在輸入框中);

      ——》拖拽Toolbar控件和UipickerView控件組成城市選擇器;(將Toolbar控件的Item更名為“完成”,將來點擊“完成”按鈕結束地址的選擇,如果“完成”按鈕在Toolbar的左側覺得別扭可再拖拽一個Flexibel控件于“完成”的左側)結果如圖:

      

第四步:連線

       ——》點擊上圖最上面的第一個黃色圓形圖案,出現如下圖界面:

 

          ——》點擊上圖右上角顯示藍色的圖案;再從下方Referencing Outlets下得New Referencing Outlets右側的圓圈中拖拽連線到UIPickerView控件上分別選擇delegate和dataSource;結果如下圖:

     

       ——》再連線視圖與ViewController.m

        (1)UITextFiled連接一個UIOutlet命名為cityField和一個Action命名為CityAction(Action連接上Event選擇Edit Did Begin,表示開始編輯輸入框時就要執行的動作)

       (2)Toolbar連接一個UIOutlet命名為cityToolbar,Toolbar上的“完成”按鈕連接一個Action命名為selectedAction

       (3)UIPickerView連接一個UIOutlet命名為cityPicker

      ——》將Toolbar與UIPickerView兩個控件的Hidden屬性勾選, 使其不可見;

 

第五步:編碼

     ——》編寫數據模型HZLocation(需新建File,繼承NSObject大類)

 

#import <Foundation/Foundation.h>@interface HZLocation : NSObject@PRoperty (copy, nonatomic) NSString *country;@property (copy, nonatomic) NSString *state;@property (copy, nonatomic) NSString *city;@property (copy, nonatomic) NSString *district;@property (copy, nonatomic) NSString *street;@property (nonatomic) double latitude;@property (nonatomic) double longitude;@end
#import "HZLocation.h"@implementation HZLocation@synthesize country = _country;@synthesize state = _state;@synthesize city = _city;@synthesize district = _district;@synthesize street = _street;@synthesize latitude = _latitude;@synthesize longitude = _longitude;@end

 

 

       ——》在ViewController.h中,引入HZLocation.h,并引入UIPickerViewDelegate,UIPickerViewDatasource

#import <UIKit/UIKit.h>#import "HZLocation.h"@interface ViewController : UIViewController<UIPickerViewDelegate, UIPickerViewDataSource>@property (strong, nonatomic) HZLocation *locate;@end

 

      ——》在ViewController.m中

#import "ViewController.h"@interface ViewController ()@property (weak, nonatomic) IBOutlet UITextField *cityField;- (IBAction)CityAction:(id)sender;@property (weak, nonatomic) IBOutlet UIToolbar *cityToolbar;- (IBAction)selectedAction:(id)sender;@property (weak, nonatomic) IBOutlet UIPickerView *cityPicker;@property (nonatomic, strong) NSArray *provinces;@property (nonatomic, strong) NSArray *cities;@property (nonatomic, strong) NSArray *areas;@property (nonatomic, strong) NSString *selected;@end@implementation ViewController@synthesize provinces, cities, areas;@synthesize locate=_locate;@synthesize cityPicker = _cityPicker;- (void)viewDidLoad {    [super viewDidLoad];    // Do any additional setup after loading the view, typically from a nib.        self.cityField.inputView = [[UIView alloc] initWithFrame:CGRectZero];        provinces = [[NSArray alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"area.plist" ofType:nil]];    cities = [[provinces objectAtIndex:0] objectForKey:@"cities"];        self.locate.state = [[provinces objectAtIndex:0] objectForKey:@"state"];    self.locate.city = [[cities objectAtIndex:0] objectForKey:@"city"];        areas = [[cities objectAtIndex:0] objectForKey:@"areas"];    if (areas.count > 0) {        self.locate.district = [areas objectAtIndex:0];    } else{        self.locate.district = @"";    }}-(HZLocation *)locate{    if (_locate == nil) {        _locate = [[HZLocation alloc] init];    }        return _locate;}- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{    return 3;}- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{    switch (component) {        case 0:            return [provinces count];            break;        case 1:            return [cities count];            break;        case 2:            return [areas count];            break;                    default:            return 0;            break;    }    }- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{        switch (component) {        case 0:            return [[provinces objectAtIndex:row] objectForKey:@"state"];            break;        case 1:            return [[cities objectAtIndex:row] objectForKey:@"city"];            break;        case 2:            if ([areas count] > 0) {                return [areas objectAtIndex:row];                break;            }        default:            return  @"";            break;    }}- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{    switch (component) {        case 0:            cities = [[provinces objectAtIndex:row] objectForKey:@"cities"];            [self.cityPicker selectRow:0 inComponent:1 animated:YES];            [self.cityPicker reloadComponent:1];                        areas = [[cities objectAtIndex:0] objectForKey:@"areas"];            [self.cityPicker selectRow:0 inComponent:2 animated:YES];            [self.cityPicker reloadComponent:2];                        self.locate.state = [[provinces objectAtIndex:row] objectForKey:@"state"];            self.locate.city = [[cities objectAtIndex:0] objectForKey:@"city"];            if ([areas count] > 0) {                self.locate.district = [areas objectAtIndex:0];            } else{                self.locate.district = @"";            }            break;        case 1:            areas = [[cities objectAtIndex:row] objectForKey:@"areas"];            [self.cityPicker selectRow:0 inComponent:2 animated:YES];            [self.cityPicker reloadComponent:2];                        self.locate.city = [[cities objectAtIndex:row] objectForKey:@"city"];            if ([areas count] > 0) {                self.locate.district = [areas objectAtIndex:0];            } else{                self.locate.district = @"";            }            break;        case 2:            if ([areas count] > 0) {                self.locate.district = [areas objectAtIndex:row];            } else{                self.locate.district = @"";            }            break;        default:            break;    }    NSString *str = [self.locate.state stringByAppendingString:self.locate.city];    _selected = [str stringByAppendingString:self.locate.district];}- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view{    UILabel* pickerLabel = (UILabel*)view;    if (!pickerLabel){        pickerLabel = [[UILabel alloc] init];        pickerLabel.adjustsFontSizeToFitWidth = YES;        [pickerLabel setFont:[UIFont boldSystemFontOfSize:15]];    }    pickerLabel.text=[self pickerView:pickerView titleForRow:row forComponent:component];    return pickerLabel;}- (CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component{    if (component == 0) {        return 80;    }    if (component == 1) {        return 100;    }    return 120;}- (void)didReceiveMemoryWarning {    [super didReceiveMemoryWarning];    // Dispose of any resources that can be recreated.}- (IBAction)CityAction:(id)sender {    self.cityToolbar.hidden = NO;    self.cityPicker.hidden = NO;}- (IBAction)selectedAction:(id)sender {    self.cityToolbar.hidden = YES;    self.cityPicker.hidden = YES;    self.cityField.text = _selected;}@end

 

效果圖如下:

 

 

 

        


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日本亚洲精品在线观看| 欧美电影在线观看完整版| 国产成人涩涩涩视频在线观看| 国产精品久久久999| 97久久精品在线| 丰满岳妇乱一区二区三区| 亚洲色图狂野欧美| 国产91精品久久久久| 成人av色在线观看| 精品久久久久久久久久久久久久| 国产成人午夜视频网址| 国产精品日日做人人爱| 久久天天躁狠狠躁夜夜躁2014| 日韩av中文字幕在线| 亚洲有声小说3d| 91精品国产九九九久久久亚洲| 色妞久久福利网| 国产伊人精品在线| 国产午夜精品全部视频在线播放| 高跟丝袜一区二区三区| 亚洲一区二区三区777| 欧美大片在线看| 国产精品自产拍高潮在线观看| 欧美做受高潮1| 亚洲一区av在线播放| 伊人久久久久久久久久久| 亚洲一级免费视频| 亚洲精品日韩欧美| 北条麻妃一区二区三区中文字幕| 欧美精品在线免费观看| 97精品一区二区视频在线观看| 日韩av在线免费播放| 午夜精品一区二区三区av| 欧美精品在线免费观看| 国产精品男人爽免费视频1| 懂色av影视一区二区三区| 亚洲国产高清福利视频| 国产精品视频公开费视频| 国产精品免费看久久久香蕉| 色哟哟网站入口亚洲精品| 欧美日本高清视频| 欧美精品xxx| 久久精品国产亚洲| 国内免费精品永久在线视频| 成人黄色免费网站在线观看| 麻豆成人在线看| 久久99精品久久久久久噜噜| 日韩中文娱乐网| 欧美日韩中国免费专区在线看| 精品久久久中文| 亚洲精品久久久久久下一站| 亚洲精品xxxx| 国产不卡精品视男人的天堂| 欧美午夜激情小视频| 国产成人久久久精品一区| 激情懂色av一区av二区av| 欧美一区二区三区图| 91精品在线观看视频| 亚洲桃花岛网站| 欧美一级视频免费在线观看| 亚洲自拍偷拍视频| 日韩精品视频在线观看网址| 91精品国产综合久久香蕉最新版| 日韩在线中文字幕| 久久久国产一区二区三区| 久久99国产精品自在自在app| 国产亚洲综合久久| 影音先锋欧美在线资源| 久久男人av资源网站| 国产一区二区丝袜| 日韩在线小视频| 亚洲国产毛片完整版| 亚洲精品综合精品自拍| 中文字幕精品在线| 17婷婷久久www| 国产精品久久久久久影视| 欧美大尺度在线观看| 欧美成人精品一区二区三区| 91av中文字幕| 亚洲电影免费观看高清完整版在线观看| 亚洲天堂av在线免费观看| 日韩欧美在线国产| 亚洲国产小视频| 午夜精品福利视频| 日韩中文在线中文网在线观看| 亚洲人线精品午夜| 日韩中文在线不卡| 中文字幕精品网| 久久精品国产亚洲7777| 久久精品欧美视频| 日本中文字幕不卡免费| 粉嫩av一区二区三区免费野| 91沈先生作品| 一本色道久久综合狠狠躁篇的优点| 亚洲国产另类 国产精品国产免费| 欧美又大粗又爽又黄大片视频| 久久99精品国产99久久6尤物| 欧美激情久久久久| 国产97人人超碰caoprom| 欧美丝袜第一区| 日韩黄在线观看| 亚洲国产天堂久久国产91| 国产午夜精品理论片a级探花| 日韩中文字幕精品视频| 热久久视久久精品18亚洲精品| 黄色精品在线看| 亚洲免费av电影| 精品国偷自产在线视频99| 欧美在线视频在线播放完整版免费观看| 中文字幕亚洲欧美日韩高清| 最近2019年手机中文字幕| 亚洲第一区中文字幕| 亚洲激情自拍图| 欧洲永久精品大片ww免费漫画| 国产成人av在线| 国产一区二区三区在线观看视频| 久久精彩免费视频| 91午夜在线播放| 国产91|九色| 久久久久久亚洲精品中文字幕| 亚洲一区二区三区四区视频| 91网站在线免费观看| 亚洲精品丝袜日韩| 亚洲欧洲午夜一线一品| 欧美激情第6页| 91精品国产高清自在线看超| 91在线免费观看网站| 日韩精品极品在线观看| 国产精品电影网站| 久久免费视频网站| 色爱av美腿丝袜综合粉嫩av| 精品久久久国产精品999| 欧美亚州一区二区三区| 91精品国产91久久久久久最新| 91精品视频在线| 久久久国产一区二区三区| 不卡av电影在线观看| 国产成人一区三区| 亚洲福利在线视频| 亚洲人成在线电影| 国产91精品久| 一区二区三区国产在线观看| 亚洲电影在线观看| 日韩精品视频在线播放| 亚洲欧美日韩爽爽影院| 国产精品激情av在线播放| 亚洲中国色老太| www.99久久热国产日韩欧美.com| 亚洲国产精品久久91精品| 精品呦交小u女在线| 最近中文字幕2019免费| 欧美日韩亚洲视频一区| 韩国欧美亚洲国产| 91久久久久久久久久| 亚洲精品乱码久久久久久按摩观| 国产精品91久久久| 国语自产精品视频在线看一大j8| 中文字幕亚洲一区在线观看| 亚洲视频日韩精品| 国产精品久久不能| 久久久久国色av免费观看性色| 黑人巨大精品欧美一区二区免费| 欧美电影免费观看大全| 日韩一级裸体免费视频|