swift4.0 UIPickerView的使用(省市區(qū)、日期牧牢、性別選擇器)

swift4.0 省市區(qū)看锉、日期、性別選擇器

一塔鳍、swift日期選擇器很簡單


? ? ? ? ? ? ? ?datePicker.datePickerMode = UIDatePickerMode.date?? ? ? ? ? ? ? datePicker=UIDatePicker.init(frame:CGRect.init(x:0, y:44, width:kScreenWidth, height:pickerH-44))

?? ? ? ? ? ? ? datePicker.locale=Locale.init(identifier:"zh_CN")

?? ? ? ? ? ? ? datePicker.backgroundColor = UIColor.white

?? ? ? ? ? ? ? datePicker.addTarget(self, action:#selector(BHJPickerView.dateSelected(_:)), for:UIControlEvents.valueChanged)

?? ? ? ? ? ? ? datePicker.setDate(Date(), animated:true)

二伯铣、性別選擇器


?? ? ? ? ? ? ? genderPicker=UIPickerView.init(frame:CGRect.init(x:0, y:44, width:kScreenWidth, height:pickerH-44))

?? ? ? ? ? ? ? genderPicker.delegate=self

?? ? ? ? ? ? ? genderPicker.dataSource=self

?? ? ? ? ? ? ? genderPicker.backgroundColor = UIColor.white

? ? ? ? ? ? ? ? ? ? dataArray=NSMutableArray.init(array: ["男","女"])

? ? ? ? ? ? ? ? ? ? self.pickerView(genderPicker, didSelectRow:0, inComponent:0)

三、地址選擇器


首先讀取本地省轮纫、市腔寡、區(qū)文件

? ? ? ? ? let path =Bundle.main.path(forResource:"city", ofType:"json")

? ? ? ? ? let url =URL(fileURLWithPath: path!)

? ? ? ? ? let addressData =NSData.init(contentsOf: url)

? ? ? ? ? let addressDic = try! JSONSerialization.jsonObject(with: addressData! as Data, options: JSONSerialization.ReadingOptions.mutableContainers) as! NSArray

? ? ? ? ? let dic = addressDic.object(at:0)as!NSDictionary

? ? ? ? ? let provinceArray = dic["childs"]as!NSArray

? ? ? ? ? for I in0..<provinceArray.count

?? ? ? ? ? ? ? let provinceDic = provinceArray.object(at: i)as!NSDictionary

?? ? ? ? ? ? ? let provinceM =AddressModel.init()

?? ? ? ? ? ? ? provinceM.region_name= (provinceDic["region_name"]as?String)

?? ? ? ? ? ? ? provinceM.region_id= (provinceDic["region_id"]as!String)

?? ? ? ? ? ? ? provinceM.agency_id= (provinceDic["agency_id"]as?String)

?? ? ? ? ? ? ? provinceM.parent_id= (provinceDic["parent_id"]as!String)

?? ? ? ? ? ? ? provinceM.region_type= (provinceDic["region_type"]as!String)

?? ? ? ? ? ? ? provinceM.childs= (provinceDic["childs"]as! [NSDictionary])

?? ? ? ? ? ? ? self.dataArray.add(provinceM)

然后執(zhí)行UIPickerView的協(xié)議代理:

? /// 返回列

?? ? ///

?? ? /// -ParameterpickerView: pickerView

?? ? /// -Returns: 列

?? ? funcnumberOfComponents(in pickerView:UIPickerView) ->Int{

? ? ? ? ? switch isAddress{

? ? ? ? ? case true:

?? ? ? ? ? ? ? return 3

? ? ? ? ? default:

?? ? ? ? ? ? ? return 1

? ? ? ? ? }

?? ? }


?? ? /// 返回對應(yīng)列的行數(shù)

?? ? ///

?? ? /// -Parameters:

?? ? ///? - pickerView: pickerView

?? ? ///? - component: 列

?? ? /// -Returns: 行

?? ? funcpickerView(_pickerView:UIPickerView, numberOfRowsInComponent component:Int) ->Int{


? ? ? ? ? switch isAddress{

? ? ? ? ? case true:

?? ? ? ? ? ? ? if component ==0{

? ? ? ? ? ? ? ? ? ? return dataArray.count

?? ? ? ? ? ? ? }elseifcomponent ==1{

? ? ? ? ? ? ? ? ? ? return cityArray.count

?? ? ? ? ? ? ? }else{

? ? ? ? ? ? ? ? ? ? return districtArray.count

?? ? ? ? ? ? ? }

? ? ? ? ? default:

?? ? ? ? ? ? ? return dataArray.count

? ? ? ? ? }

?? ? }


?? ? /// 返回對應(yīng)行的title

?? ? ///

?? ? /// -Parameters:

?? ? ///? - pickerView: pickerView

?? ? ///? - row: 行

?? ? ///? - component: 列

?? ? /// -Returns: title

?? ? funcpickerView(_pickerView:UIPickerView, titleForRow row:Int, forComponent component:Int) ->String? {

? ? ? ? ? var title =""

? ? ? ? ? switch isAddress{

? ? ? ? ? case true:

?? ? ? ? ? ? ? if component ==0{

? ? ? ? ? ? ? ? ? ? let provinceM =dataArray[row]as!AddressModel

? ? ? ? ? ? ? ? ? ? title = provinceM.region_name??"未知"

? ? ? ? ? ? ? ? ? ? return title

?? ? ? ? ? ? ? }else if component ==1{

? ? ? ? ? ? ? ? ? ? let cityModel =cityArray[row]as!AddressModel

? ? ? ? ? ? ? ? ? ? title = cityModel.region_name??"未知"

? ? ? ? ? ? ? ? ? ? return title

?? ? ? ? ? ? ? }else{

? ? ? ? ? ? ? ? ? ? let areaModel =districtArray[row]as!AddressModel

? ? ? ? ? ? ? ? ? ? title = areaModel.region_name??"未知"

? ? ? ? ? ? ? ? ? ? return title

?? ? ? ? ? ? ? }

? ? ? ? ? default:

?? ? ? ? ? ? ? title =dataArray[row]as!String

?? ? ? ? ? ? ? return title

? ? ? ? ? }

?? ? }


?? ? /// 選擇列、行

?? ? ///

?? ? /// -Parameters:

?? ? ///? - pickerView: pickerView

?? ? ///? - row: 行

?? ? ///? - component: 列

?? ? func pickerView(_pickerView:UIPickerView, didSelectRow row:Int, inComponent component:Int) {


? ? ? ? ? switch isAddress{

? ? ? ? ? case true:

?? ? ? ? ? ? ? if component ==0{

? ? ? ? ? ? ? ? ? ? let provinceM =dataArray[row]as!AddressModel

? ? ? ? ? ? ? ? ? ? let cityDicArray = provinceM.childs!

? ? ? ? ? ? ? ? ? ? cityArray.removeAllObjects()

? ? ? ? ? ? ? ? ? ? for j in 0..cityDicArray.count

?? ? ? ? ? ? ? ? ? ? ? ? letcityDic = cityDicArray[j]

?? ? ? ? ? ? ? ? ? ? ? ? letcityM =AddressModel.init()

?? ? ? ? ? ? ? ? ? ? ? ? cityM.region_name= (cityDic["region_name"]as?String)

?? ? ? ? ? ? ? ? ? ? ? ? cityM.region_id= (cityDic["region_id"]as!String)

?? ? ? ? ? ? ? ? ? ? ? ? cityM.agency_id= (cityDic["agency_id"]as?String)

?? ? ? ? ? ? ? ? ? ? ? ? cityM.parent_id= (cityDic["parent_id"]as!String)

?? ? ? ? ? ? ? ? ? ? ? ? cityM.region_type= (cityDic["region_type"]as!String)

?? ? ? ? ? ? ? ? ? ? ? ? cityM.childs= (cityDic["childs"]as! [NSDictionary])

?? ? ? ? ? ? ? ? ? ? ? ? cityArray.add(cityM)

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? // 默認選擇當前省的第一個城市對應(yīng)的區(qū)縣

? ? ? ? ? ? ? ? ? ? self.pickerView(pickerView, didSelectRow:0, inComponent:1)

? ? ? ? ? ? ? ? ? ? selectedProvince= provinceM

?? ? ? ? ? ? ? }else if component ==1{

? ? ? ? ? ? ? ? ? ? let cityModel =cityArray[row]as!AddressModel

? ? ? ? ? ? ? ? ? ? let areaArray = cityModel.childs!

? ? ? ? ? ? ? ? ? ? districtArray.removeAllObjects()

? ? ? ? ? ? ? ? ? ? for j in 0..<areaArray.count

?? ? ? ? ? ? ? ? ? ? ? ? letareaDic = areaArray[j]

?? ? ? ? ? ? ? ? ? ? ? ? letareaModel =AddressModel.init()

?? ? ? ? ? ? ? ? ? ? ? ? areaModel.region_name= (areaDic["region_name"]as?String)

?? ? ? ? ? ? ? ? ? ? ? ? areaModel.region_id= (areaDic["region_id"]as!String)

?? ? ? ? ? ? ? ? ? ? ? ? areaModel.agency_id= (areaDic["agency_id"]as?String)

?? ? ? ? ? ? ? ? ? ? ? ? areaModel.parent_id= (areaDic["parent_id"]as!String)

?? ? ? ? ? ? ? ? ? ? ? ? areaModel.region_type= (areaDic["region_type"]as!String)

?? ? ? ? ? ? ? ? ? ? ? ? districtArray.add(areaModel)

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? selectedCity= cityModel

? ? ? ? ? ? ? ? ? ? self.pickerView(pickerView, didSelectRow:0, inComponent:2)

?? ? ? ? ? ? ? }else{

? ? ? ? ? ? ? ? ? ? let areaModel =districtArray[row]as!AddressModel

? ? ? ? ? ? ? ? ? ? selectedDistrict= areaModel

?? ? ? ? ? ? ? }

?? ? ? ? ? ? ? pickerView.reloadAllComponents()

? ? ? ? ? default:

?? ? ? ? ? ? ? selectedGender=dataArray[row]as!String

? ? ? ? ? }

?? ? }


代碼地址:https://github.com/bhjmoshang/BHJPickerView.git

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末掌唾,一起剝皮案震驚了整個濱河市放前,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌糯彬,老刑警劉巖凭语,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異撩扒,居然都是意外死亡似扔,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進店門搓谆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來炒辉,“玉大人,你說我怎么就攤上這事泉手∏埽” “怎么了?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵斩萌,是天一觀的道長缝裤。 經(jīng)常有香客問我状囱,道長,這世上最難降的妖魔是什么倘是? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任亭枷,我火速辦了婚禮,結(jié)果婚禮上搀崭,老公的妹妹穿的比我還像新娘叨粘。我一直安慰自己,他們只是感情好瘤睹,可當我...
    茶點故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布升敲。 她就那樣靜靜地躺著,像睡著了一般轰传。 火紅的嫁衣襯著肌膚如雪驴党。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天获茬,我揣著相機與錄音港庄,去河邊找鬼。 笑死恕曲,一個胖子當著我的面吹牛鹏氧,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播佩谣,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼把还,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了茸俭?” 一聲冷哼從身側(cè)響起吊履,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎调鬓,沒想到半個月后艇炎,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡袖迎,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年冕臭,在試婚紗的時候發(fā)現(xiàn)自己被綠了腺晾。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片燕锥。...
    茶點故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖悯蝉,靈堂內(nèi)的尸體忽然破棺而出归形,到底是詐尸還是另有隱情,我是刑警寧澤鼻由,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布暇榴,位于F島的核電站厚棵,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏蔼紧。R本人自食惡果不足惜婆硬,卻給世界環(huán)境...
    茶點故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望奸例。 院中可真熱鬧彬犯,春花似錦、人聲如沸查吊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽逻卖。三九已至宋列,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間评也,已是汗流浹背炼杖。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留盗迟,地道東北人嘹叫。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像诈乒,于是被迫代替她去往敵國和親罩扇。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,722評論 2 345

推薦閱讀更多精彩內(nèi)容

  • Another way to recycle plastic Plastic production has tri...
    Berry521閱讀 202評論 0 0
  • 鑒于在搭建時怕磨,參考網(wǎng)上很多資料喂饥,網(wǎng)上資料在有用的同時,也坑了很多人 本文的目的肠鲫,也就是想讓后繼之人在搭建svn服務(wù)...
    52d3a1968d95閱讀 333評論 0 0
  • 本來該今天預(yù)產(chǎn)期的笑笑豬员帮,提前了19天來到我身邊,可能上天派他來渡我的吧导饲,他讓我自己學會調(diào)整心情捞高,調(diào)整心態(tài),就算他...
    小笨豬520閱讀 124評論 0 0
  • 事務(wù) //實際上動畫執(zhí)行的時間取決于當前事務(wù)的設(shè)置渣锦,動畫類型取決于圖層行為硝岗。//事務(wù)實際上是Core Animat...
    S大偉閱讀 191評論 0 0
  • “媽,我昨天晚上做了個特別詭異的夢——整個學校的人在樓道走廊里玩悠悠球袋毙,我在他們面前把手一抬型檀,全部人的悠悠球都突然...
    Loopooi閱讀 697評論 2 7