UIPickerView選擇器

#import "ViewController.h"
@interface ViewController ()<UIPickerViewDataSource,UIPickerViewDelegate>
{
    NSArray *_procinceArray;
    NSArray *_hebeiArray;
    NSArray *_henanArray;
    NSArray *_anhuiArray;
}
@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    _procinceArray = [NSArray arrayWithObjects:@"河北",@"河南",@"安徽", nil];
    _hebeiArray =[NSArray arrayWithObjects:@"石家莊"@"保定"@"定州", nil];
    _henanArray = [NSArray arrayWithObjects:@"鄭州",@"安陽",@"濮陽", nil];
    _anhuiArray = [NSArray arrayWithObjects:@"合肥", nil];
    //選擇器高度的范圍:1~179:162  180~215 :180    0或者216++:216;
    UIPickerView *pickerview = [[UIPickerView alloc] initWithFrame:CGRectMake(0, 100, 320, 216)];
    pickerview.dataSource = self;
    pickerview.delegate = self;
    [self.view addSubview:pickerview];
}
//返回列數(shù)
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
    return 2;
}
//返回每一列下的行數(shù)
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
    if (component == 0)
    {
        return _procinceArray.count;
    }
    if (component == 1)
    {
        //城市:不同省份對應(yīng)的數(shù)據(jù)不一樣,所需的行數(shù)也是不同的
        //要確定第一列有多少行數(shù),首先要知道第0列選擇哪一行;
        int selectedRow = [pickerView selectedRowInComponent:0];
        if (selectedRow == 0)
        {
            return _hebeiArray.count;
        }
        if (selectedRow == 1)
        {
            return _henanArray.count;
        }
        else
        {
            return _anhuiArray.count;
        }
    }
    return 0;
}
//是用于設(shè)置每一列中每一行的標(biāo)題內(nèi)容
-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
    if (component == 0)
    {
        return [_procinceArray objectAtIndex:row];
    }
    else
    {
        //首先判斷第0列選擇哪一行
        int selectedRow = [pickerView selectedRowInComponent:0];
        if (selectedRow == 0)
        {
            return [_hebeiArray objectAtIndex:row];
        }
        else if (selectedRow == 1)
        {
            return [_henanArray objectAtIndex:row];
        }
        else
        {
            return [_anhuiArray objectAtIndex:row];
        }
    }
    return 0;
}
//設(shè)置行的高度
-(CGFloat)pickerView:(UIPickerView *)pickerView rowHeightForComponent:(NSInteger)component
{
    return 50;
}
//設(shè)置列的寬度
-(CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component

{
    if (component == 0)
    {
        return 200;
    }
    else
    {
        return 100;
    }
}
//當(dāng)你選中某一列中的某一行的時(shí)候,會調(diào)用該方法
-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
    //如果你改變了第0列當(dāng)前選中的行,及時(shí)去刷新Pickview ,你在刷新pickview的時(shí)候,上面的協(xié)議方法會被從新調(diào)用;
    if (component == 0)
    {
        //只要第0列行數(shù)改變,就去刷新第一例的數(shù)據(jù)
//        [pickerView reloadComponent:1];
        //全部刷新
        [pickerView reloadAllComponents];
        //刷新完畢之后,可以指定地1列當(dāng)前選中的行;
        [pickerView selectRow:0 inComponent:1 animated:YES ];
    }
}
@end
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容