您的位置:首页 > 产品设计 > UI/UE

UIKit框架-高级控件:7.UIPickerView的自定义

2015-03-03 12:32 435 查看
在前面, 我们使用了UIPickerView试验了几次, 与其他UI控件结合在一起使用的也有, 今天我们就把UIPickerView剥的更深入, 让我们更加好的掌握UIPickerVIew, 下面让我们来看看

1.在.h文件里遵守UIPickerView的代理方法和数据源方法

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController <UIPickerViewDataSource, UIPickerViewDelegate>

@end


2.在.m文件里声明全局变量

@interface ViewController ()
{
UIPickerView *_pickerView;
NSArray *_arrayOne;
NSArray *_arrayTwo;
}
@end

PS:这两个数组分别是要用来存放UIPickerView的左右两边选择器的内容.

3.实例化UIPickerView

#pragma mark - 添加UIPikerView
- (void)myPikerView
{
// 1.实例化UIPickerView
_pickerView = [[UIPickerView alloc] initWithFrame:CGRectMake(0, self.view.frame.size.height - 250, self.view.frame.size.width, 250)];
[_pickerView setBackgroundColor:[UIColor grayColor]];

// 2.设置UIPickerView的代理方法和数据源方法.
[_pickerView setDelegate:self];
[_pickerView setDataSource:self];

// 3.设置是否显示内容
[_pickerView setShowsSelectionIndicator:YES];

// 4.把UIPickerView添加到self.view
[self.view addSubview:_pickerView];
}


4.添加UIPickerView的数据源方法

// 返回UIPickerView有多少列
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
return 2;
}

// 返回UIPickerView有多少行
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
if (component == 0) {
return _arrayOne.count;
} else {
return _arrayTwo.count;
}
}

5.添加UIPickerView的代理方法

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
if (component == 0) {
return _arrayOne[row];
} else {
return _arrayTwo[row];
}
}

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
NSLog(@"第一列选中的行数是 %ld,第二列选中的行数是 %ld", [pickerView selectedRowInComponent:0], [pickerView selectedRowInComponent:1]);

NSInteger leftCol = [pickerView selectedRowInComponent:0];
NSInteger rightCol = [pickerView selectedRowInComponent:1];

NSLog(@"%@ ~~~ %@", _arrayOne[leftCol], _arrayTwo[rightCol]);

}


6.定义数组的内容

- (void)myArray
{
_arrayOne = @[@"辰东", @"唐家三少"];
_arrayTwo = @[@"完美世界", @"天火大道", @"神墓"];
}


最终效果:



附件: UIPickerView的代理方法拓展

- (CGFloat)pickerView:(UIPickerView *)pickerView rowHeightForComponent:(NSInteger)component
{
return 100;
}

- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view
{
UIView *views = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 20, 20)];
[views setBackgroundColor:[UIColor redColor]];
return views;
}

效果:



好了, 这次我们就讲到这里, 下次我们继续~~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: