先看效果圖:
實現這一的效果使用的控制元件是UIpickerview。使用的時候就會知道其實這個控制元件跟tableview的使用差不多,都有自己的代理方法,返回個數,返回component的個數類似於tableview的section,然後每個component會有多少個row。實現方法,然後把plist檔案儲存的省市區這個大字典,轉成model,這裡我轉model用的是mjextension。然後在titleforrow這個方法裡返回title就可以了。
注意一點,在滑動的時候,我把滑動完成的當前index標記,用來記住滑動完成後該顯示哪個title,但是有一種另外的情況,就是比如我剛滑到了黑龍江省,有10幾個市 滑動右邊城市的時候快速滑動,還沒停止的時候最左邊的省份迅速滑動到上海,然後上海是一個直轄市,裡面的城市只有一個,這時候右邊剛才黑龍江的市 剛剛停止滑動,index很大,然後左邊的省份已經切換到了上海,拿那個很大的index去上海這個省份裡重新整理城市,就會報陣列越界的錯誤,導致程式崩潰
這裡我採用了一個辦法,就是當左邊省份滑動完成的時候 會呼叫一次reload方法,在reload方法執行之後緊接著執行的的返回個數和title的方法裡面 做一個判斷,就是如果此時城市的index大於當前省份做含的城市個數,就讓城市index
= 0.這樣之前滑動到了任何一個城市大於1的省份之後迅速滑動右邊的城市列表,然後左邊迅速切換到直轄市,重新重新整理整個pickerview的時候就不會崩潰了。
附git地址:github.com/dota4app/Pi…