第一步:選擇iphone的螢幕
注意:在選擇螢幕後如果工程在別的地方開啟需要重新選擇對應的螢幕 也就是與之對應的size class,否則的話是不會顯示元件的。
第二步:建立約束,進行螢幕適配。
第三步:設定pickerview的資料來源和**物件為當前的控制器。
第四步:讓pickerview所在的控制器遵循對應的**協議。並實現對應的資料來源和**方法。
第五步:新建或建好資源檔案拖進去。
執行效果如下:
關於資料來源和協議方法可以直接點進去拷貝。
在實現省市聯動功能時需要注意的兩點如下:
(一)設定選中省份的索引為全域性變數。以便重新整理第二列對應的城市時使用。
(二)在選中行的**方法中不管第二列之前選中第幾行,在重新整理資料後都重新顯示第一行。
具體工程如下:
建立與plist檔案對應的model類province
province.h
//
// province.h
// 03.省市聯動
//// created by 劉劉勛 on 16/1/3.
//#import #import @inte***ce province : nsobject
@property(nonatomic, copy)nsstring *name;
@property(nonatomic, strong)nsarray *cities;
-(instancetype)initwithdic:(nsdictionary *)dic;
+(instancetype)provincewithdic:(nsdictionary *)dic;
+(nsarray *)provincelist;
@end
province.m
//
viewcontroller.m// province.m
// 03.省市聯動
//// created by 劉劉勛 on 16/1/3.
//#import "province.h"
@implementation province
-(instancetype)initwithdic:(nsdictionary *)dic
return self;
}+(instancetype)provincewithdic:(nsdictionary *)dic
+(nsarray *)provincelist
return provincem;
}@end
//
// viewcontroller.m
// 03.省市聯動
//// created by 劉劉勛 on 16/1/3.
//#import "viewcontroller.h"
#import "province.h"
@inte***ce viewcontroller ()@property(nonatomic, strong)nsarray *provinces;
@property(nonatomic, assign)nsinteger indexofprovince; //當前預設選中的省份
@end
@implementation viewcontroller
-(nsarray *)provinces
return _provinces;
}- (void)viewdidload
// returns the number of 'columns' to display.
- (nsinteger)numberofcomponentsinpickerview:(uipickerview *)pickerview
// returns the # of rows in each component..
- (nsinteger)pickerview:(uipickerview *)pickerview numberofrowsincomponent:(nsinteger)component
// 獲取對應省份的城市個數
province *province = self.provinces[self.indexofprovince];
return province.cities.count;
}#pragma mark - 顯示資料
-(nsstring *)pickerview:(uipickerview *)pickerview titleforrow:(nsinteger)row forcomponent:(nsinteger)component
// 獲取選中的城市,顯示城市的名稱
province *selectedprovince = self.provinces[self.indexofprovince];
return selectedprovince.cities[row];
}//-(uiview *)pickerview:(uipickerview *)pickerview viewforrow:(nsinteger)row forcomponent:(nsinteger)component reusingview:(uiview *)view
////
// if (component == 0) else
//
// return label;
//}#pragma mark - 選中行
-(void)pickerview:(uipickerview *)pickerview didselectrow:(nsinteger)row incomponent:(nsinteger)component
}#pragma mark 設定每一列的寬度
-(cgfloat)pickerview:(uipickerview *)pickerview widthforcomponent:(nsinteger)component
return 200;
}@end
UIPickerView元件的使用之 省市聯動
第一步 選擇iphone的螢幕 注意 在選擇螢幕後如果工程在別的地方開啟需要重新選擇對應的螢幕 也就是與之對應的size class,否則的話是不會顯示元件的。第二步 建立約束,進行螢幕適配。第三步 設定pickerview的資料來源和 物件為當前的控制器。第四步 讓pickerview所在的控制器...
UIPickerView的使用 二
上篇文章 uipickerview的使用 一 學習了如何建立單列選擇器,現在看一下如何建立多列選擇器 多列選擇器 以二列為例 uipickerviewdatasource中定義的方法,該方法的返回值決定該控制項包含的列數 nsinteger numberofcomponentsinpickervie...
UIPickerView的使用 三
前兩篇文章 uipickerview的使用 一 uipickerview的使用 二 學習了uipickerview的單列選擇器和雙列選擇器的使用。現在我們一起學習相互依賴的多列選擇器 uipickerviewdatasource中定義的方法,該方法的返回值決定該控制項包含的列數 nsinteger ...