iOS入門-28UIPickerView

概述

UIPickerView選擇控件

可以用來實現例如日期、地方名稱等

示例

仔細看註釋,很好理解

先看圖

在這裏插入圖片描述

在這裏插入圖片描述

示例代碼

ViewController.h

#import <UIKit/UIKit.h>

//UIPickerViewDelegate:普通協議代理,處理視圖選取等普通事件協議功能
//UIPickerViewDataSource:數據協議代理,處理獲取數據時的代理協議函數
@interface ViewController : UIViewController <UIPickerViewDelegate,UIPickerViewDataSource>
@end

ViewController.m

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    
    //選擇視圖對象
    //顯示多組數據和多個元素以供選擇
    //例如選擇地區、日期等
    UIPickerView* pickerV = [UIPickerView new];
    //設置視圖位置和大小
    pickerV.frame = CGRectMake(10, 100, 400, 400);
    //設置UIPickerView普通代理爲本視圖控制器
    pickerV.delegate = self;
    //設置UIPickerView數據代理爲本視圖控制器
    pickerV.dataSource = self;
    
    [self.view addSubview:pickerV];

}

//下面兩個是UIPickerViewDataSource協議中的方法;且都是必須實現的方法
// 返回列數
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{
    return 3;
};

// 返回行數
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{
    return 10;
};

//下面幾個是UIPickerViewDelegate協議中的方法

//列的寬度
-(CGFloat) pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component{
    return 100;
}

//行高
-(CGFloat) pickerView:(UIPickerView *)pickerView rowHeightForComponent:(NSInteger)component{
    return 80;
}


//下面提供三種類型的數據類型供選擇
//普通字符串
-(NSString*) pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{
    return [NSString stringWithFormat:@"%d行%d列", row,component];
}


//可以設置字符屬性的字符串
//-(NSAttributedString*) pickerView:(UIPickerView *)pickerView attributedTitleForRow:(NSInteger)row forComponent:(NSInteger)component{
//
//}

//可以是自定義view
//-(UIView*) pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view{
//
//    //一個紅色的方塊
//    UIView* v = [UIView new];
//
//    v.frame = CGRectMake(0, 0, 50, 50);
//
//    v.backgroundColor = [UIColor redColor];
//
//    return v;
//}

////監聽條目被選中
-(void) pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{
    
    //獲取選中的行、列index
    NSLog([NSString stringWithFormat:@"%d行%d列",row,component]);
}
@end
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章