UIPickerView,使用UIPickerViewDataSource来配置数据,UIPickerViewDelegate来控制内容。
@interface UIPickerView : UIView <NSCoding, UITableViewDataSource> @property(nonatomic,assign) id<UIPickerViewDataSource> dataSource; // default is nil. weak reference @property(nonatomic,assign) id<UIPickerViewDelegate> delegate; // default is nil. weak reference @property(nonatomic) BOOL showsSelectionIndicator; // default is NO // info that was fetched and cached from the data source and delegate @property(nonatomic,readonly) NSInteger numberOfComponents; - (NSInteger)numberOfRowsInComponent:(NSInteger)component; - (CGSize)rowSizeForComponent:(NSInteger)component; // returns the view provided by the delegate via pickerView:viewForRow:forComponent:reusingView: // or nil if the row/component is not visible or the delegate does not implement // pickerView:viewForRow:forComponent:reusingView: - (UIView *)viewForRow:(NSInteger)row forComponent:(NSInteger)component; // Reloading whole view or single component - (void)reloadAllComponents; - (void)reloadComponent:(NSInteger)component; // selection. in this case, it means showing the appropriate row in the middle - (void)selectRow:(NSInteger)row inComponent:(NSInteger)component animated:(BOOL)animated; // scrolls the specified row to center. - (NSInteger)selectedRowInComponent:(NSInteger)component; // returns selected row. -1 if nothing selected @end @protocol UIPickerViewDataSource<NSObject> @required // 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; @end @protocol UIPickerViewDelegate<NSObject> @optional // returns width of column and height of row for each component. - (CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component; - (CGFloat)pickerView:(UIPickerView *)pickerView rowHeightForComponent:(NSInteger)component; // these methods return either a plain NSString, a NSAttributedString, or a view (e.g UILabel) to display the row for the component. // for the view versions, we cache any hidden and thus unused views and pass them back for reuse. // If you return back a different object, the old one will be released. the view will be centered in the row rect - (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component; - (NSAttributedString *)pickerView:(UIPickerView *)pickerView attributedTitleForRow:(NSInteger)row forComponent:(NSInteger)component NS_AVAILABLE_IOS(6_0); // attributed title is favored if both methods are implemented - (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view; - (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component; @end