Fading Coder

One Final Commit for the Last Sprint

Home > Tech > Content

Implementing UIPickerView and UIDatePicker in iOS

Tech Apr 14 31

UIPickerView Properties

Key properties for configuring a UIPickerView include:

// Specifies the data source object that provides data for the picker
@property(nonatomic, weak) id<UIPickerViewDataSource> dataSource;

// Specifies the delegate object that handles display and selection events
@property(nonatomic, weak) id<UIPickerViewDelegate> delegate;

// Controls visibility of the selection indicator overlay
@property(nonatomic) BOOL showsSelectionIndicator;

// Read-only property indicating total number of components (columns)
@property(nonatomic, readonly) NSInteger numberOfComponents;

UIPickerView Methods

Essential methods for managing picker view state:

// Reloads all components with fresh data
- (void)refreshAllComponents;

// Reloads data for a specific component
- (void)refreshComponent:(NSInteger)componentIndex;

// Programmatically selects a row in a component
- (void)selectRowAtIndex:(NSInteger)rowIndex 
            inComponent:(NSInteger)componentIndex 
               anmiated:(BOOL)shouldAnimate;

// Returns currently selected row index for specified component
- (NSInteger)currentSelectedRowInComponent:(NSInteger)componentIndex;

Data Source Protocol Methods

Required methods for providing data to UIPickerView:

// Returns number of columns (components) in picker
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)picker;

// Returns number of rows for specified component
- (NSInteger)pickerView:(UIPickerView *)picker 
numberOfRowsInComponent:(NSInteger)componentIndex;

Delegate Protocol Methods

Methods for customizing appearance and handling interactions:

// Defines width for each component
- (CGFloat)pickerView:(UIPickerView *)picker 
    widthForComponent:(NSInteger)componentIndex;

// Defines row height for each component
- (CGFloat)pickerView:(UIPickerView *)picker 
   rowHeightForComponent:(NSInteger)componentIndex;

// Provides text content for specific row
- (NSString *)pickerView:(UIPickerView *)picker 
             titleForRow:(NSInteger)rowIndex 
            forComponent:(NSInteger)componentIndex;

// Provides custom view for specific row (alternative too text)
- (UIView *)pickerView:(UIPickerView *)picker 
            viewForRow:(NSInteger)rowIndex 
          forComponent:(NSInteger)componentIndex 
           reuseView:(UIView *)existingView;

// Called when user selects a row
- (void)pickerView:(UIPickerView *)picker 
      didSelectRow:(NSInteger)rowIndex 
       inComponent:(NSInteger)componentIndex;

UIDatePicker Configuration

Core properties for date picker customization:

// Sets the display mode (date, time, dateAndTime, countDownTimer)
@property (nonatomic) UIDatePickerMode selectionMode;

// Sets locale to regional formatting
@property (nonatomic, strong) NSLocale *regionalLocale;

Handling UIDatePicker Events

Since UIDatePicker inherits from UIControl, use target-action pattern for event handling:

// Example: Adding target for value changes
[datePickerInstance addTarget:self 
                       action:@selector(dateSelectionChanged:) 
             forControlEvents:UIControlEventValueChanged];

// Handler method implementation
- (void)dateSelectionChanged:(UIDatePicker *)sender {
    NSDate *selectedDate = sender.date;
    // Process selected date
}

Related Articles

Understanding Strong and Weak References in Java

Strong References Strong reference are the most prevalent type of object referencing in Java. When an object has a strong reference pointing to it, the garbage collector will not reclaim its memory. F...

Implement Image Upload Functionality for Django Integrated TinyMCE Editor

Django’s Admin panel is highly user-friendly, and pairing it with TinyMCE, an effective rich text editor, simplifies content management significantly. Combining the two is particular useful for bloggi...

SBUS Signal Analysis and Communication Implementation Using STM32 with Fus Remote Controller

Overview In a recent project, I utilized the SBUS protocol with the Fus remote controller to control a vehicle's basic operations, including movement, lights, and mode switching. This article is aimed...

Leave a Comment

Anonymous

◎Feel free to join the discussion and share your thoughts.