iOS 省市區選擇的實現

2021-09-23 21:27:23 字數 3982 閱讀 3756

一、簡介

該文主要實現的是省市區的選擇,可在個人修改位址的地方使用。

二、需要的東西

三、製作原理

通過乙個uipickerview來顯示,將uipickerview分成三部分,省、市、區。進而載入資料。

四、實現效果

展示:

五、具體實現步驟:

2、實現uipicker view的**方法  --這裡的資料是暫時的,還沒新增資料

#pragma mark - uipickerviewdelegate

/** *返回每一列的資料個數

*/-(nsinteger)pickerview:(uipickerview *)pickerview numberofrowsincomponent:(nsinteger)component

else if (component==2)

else

}/**

*返回pickerview分幾列,因為是省市區選擇,所以分3列

*/-(nsinteger)numberofcomponentsinpickerview:(uipickerview *)pickerview

/** *觸發的事件

*/-(void)pickerview:(uipickerview *)pickerview didselectrow:(nsinteger)row incomponent:(nsinteger)component

/** *通過自定義view去顯示pickerview中的內容,這樣做的好處是可以自定義的調整pickerview中顯示內容的格式

*/-(uiview *)pickerview:(uipickerview *)pickerview viewforrow:(nsinteger)row forcomponent:(nsinteger)component reusin**iew:(uiview *)view

else if (component==1)

else

return myview;

}

①、首先定義三個nsarray。

nsarray *provincearr,*cityarr,*areaarr;
②、先設定provincearr.cityarr,areaarr.

provincearr = [[nsmutablearray alloc] initwithcontentsoffile:[[nsbundle mainbundle] pathforresource:@"area.plist" oftype:nil]];

cityarr = [[provincearr objectatindex:0] objectforkey:@"cities"];

areaarr = [[cityarr objectatindex:0] objectforkey:@"areas"];

預設的province列先顯示的第一列,此時剛好讓city顯示第一列的city,讓area顯示第乙個city的area。

注:(此處這樣設定是因為這個area.plist檔案的結構的原因,你可以自己看一下這個plist檔案)。

4、此時資料便有了,但是當滾動第一列時,第二列和第三列都沒有變化,其實本質上就是在設定pickerview內容的**方法中設定內容改變。重頭戲來了。--修改上面的這個**方法。

-(void)pickerview:(uipickerview *)pickerview didselectrow:(nsinteger)row incomponent:(nsinteger)component

}else if (component==1)

} 注:不要忘了重新設定每一列的資料個數

if (component==0) else if(component==1)

else

5、附加:

獲取三列的內容

province= [[provincearr objectatindex:[self.areapicker selectedrowincomponent:0]] objectforkey:@"state"]; //獲取province

city= [[cityarr objectatindex:[self.areapicker selectedrowincomponent:1]] objectforkey:@"city"];

if ([areaarr count]!=0)

6、完成,附上原始碼。(故事版上的設定大家自己設定就行了)

//

// viewcontroller.m

// provincecitydowntownchoose

//// created by xiaoguizi on 15/2/9.

// ------.m檔案------

#import "viewcontroller.h"

@inte***ce viewcontroller ()

@end

@implementation viewcontroller

- (void)viewdidload

#pragma mark - uipickerviewdelegate

/** *返回每一列的資料個數

*/-(nsinteger)pickerview:(uipickerview *)pickerview numberofrowsincomponent:(nsinteger)component

else if(component==1)

else

}/**

*返回pickerview分幾列,因為是省市區選擇,所以分3列

*/-(nsinteger)numberofcomponentsinpickerview:(uipickerview *)pickerview

/** *觸發的事件

*/-(void)pickerview:(uipickerview *)pickerview didselectrow:(nsinteger)row incomponent:(nsinteger)component

}else if (component==1)

}/**

*通過自定義view去顯示pickerview中的內容,這樣做的好處是可以自定義的調整pickerview中顯示內容的格式

*/-(uiview *)pickerview:(uipickerview *)pickerview viewforrow:(nsinteger)row forcomponent:(nsinteger)component reusin**iew:(uiview *)view

else if (component==1)

else

return myview;

}@end

------.**件------

//// viewcontroller.h

// provincecitydowntownchoose

//// created by xiaoguizi on 15/2/9.//

#import @inte***ce viewcontroller : uiviewcontroller@property (weak, nonatomic) iboutlet uipickerview *areapicker;

@end

省市區聯動選擇

js 本來返回的是地區編號,需要在後台轉換,這裡我改了一點,直接在js 裡就轉換了,返回的就是地區名 原理是js 控制的聯動查詢,通過一些判斷語句 將選擇的結果另外放在了隱藏的輸入框裡,後台讀取隱藏的輸入框就好,如將出生省份的值存到了id為txtchildrenprovince的輸入框 docume...

全國省市區資料SQL 省市區

drop table if exists provinces create table provinces id int 11 not null auto increment,provinceid varchar 20 not null,province varchar 50 not null,pr...

省市區陣列

先找到檔案對應的路徑 nsstring path users dlios desktop oc5 省市區陣列 oc5 省市區陣列 area.txt 通過路徑產生字串,內容就是txt文字裡的內容 nsstring str nsstring stringwithcontentsoffile path e...