Iphone UIpickerview组件在不同的UIView中,如何访问?
如何从不同UIView(不使用界面生成器)中的UIpickerview组件访问(获取用户选择) 谢谢 这是我的密码:Iphone UIpickerview组件在不同的UIView中,如何访问?,iphone,objective-c,xcode,uipickerview,Iphone,Objective C,Xcode,Uipickerview,如何从不同UIView(不使用界面生成器)中的UIpickerview组件访问(获取用户选择) 谢谢 这是我的密码: UIView *myView1 = [[UIView alloc] initWithFrame:CGRectMake(0, 100, 100, 100)]; UIView *myView2 = [[UIView alloc] initWithFrame:CGRectMake(20, 250, 100, 100)]; [myView1 setBackgroundColor:[UI
UIView *myView1 = [[UIView alloc] initWithFrame:CGRectMake(0, 100, 100, 100)];
UIView *myView2 = [[UIView alloc] initWithFrame:CGRectMake(20, 250, 100, 100)];
[myView1 setBackgroundColor:[UIColor blueColor]];
[myView2 setBackgroundColor:[UIColor redColor]];
[self.view addSubview:myView1];
[self.view addSubview:myView2];
UIPickerView *pickerView1 = [[UIPickerView alloc] initWithFrame:CGRectMake(0.0, 0.0, 100.0, 100.0)];
pickerView1.delegate = self;
pickerView1.showsSelectionIndicator = YES;
[myView1 addSubview:pickerView1];
UIPickerView *pickerView2 = [[UIPickerView alloc] initWithFrame:CGRectMake(0.0, 0.0, 100.0, 100.0)];
pickerView2.delegate = self;
pickerView2.showsSelectionIndicator = YES;
[myView2 addSubview:pickerView2];
我有此回调,但一旦我将pickerView放入多个UIView,它就会失败:
- (void)pickerView:(UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
NSLog(@"Selected Color: %@. Index of selected color: %i", [arrayColors objectAtIndex:row], row);
}
这就是问题所在(但不知道解决方法):
[self.view addSubview:pickerView1]// @jdl您需要阅读UIPickerView的delgate方法。以及委托协议。您可以在UIPickerViewDeleteGate协议中使用委托方法pickerView:didSelectRow:Incomonent:,并使用标记来标识选取者
- (void)pickerView:(UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
}
分配标记:
pickerView1.tag = 1;
pickerView2.tag = 2;
在委托方法中:
- (void)pickerView:(UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
if(thePickerView.tag == 1 ){
//do this
}
else if (thePickerView.tag == 2){
//do this
}
}
由于两个PickerView具有相同的委托,因此需要在委托方法中区分它们。一种方法是使用tag属性
设置每个选择器视图的标记属性。然后在UIPickerView委托方法pickerView:didSelectRow:Uncomponent:
中,查询标记并相应地响应
#define kVIEW1_PICKERVIEW_TAG 123
#define kVIEW2_PICKERVIEW_TAG 456
UIView *myView1 = [[UIView alloc] initWithFrame:CGRectMake(0, 100, 100, 100)];
UIView *myView2 = [[UIView alloc] initWithFrame:CGRectMake(20, 250, 100, 100)];
[myView1 setBackgroundColor:[UIColor blueColor]];
[myView2 setBackgroundColor:[UIColor redColor]];
[self.view addSubview:myView1];
[self.view addSubview:myView2];
UIPickerView *pickerView1 = [[UIPickerView alloc] initWithFrame:CGRectMake(0.0, 0.0, 100.0, 100.0)];
pickerView1.delegate = self;
pickerView1.tag = kVIEW1_PICKERVIEW_TAG;
pickerView1.showsSelectionIndicator = YES;
[myView1 addSubview:pickerView1];
UIPickerView *pickerView2 = [[UIPickerView alloc] initWithFrame:CGRectMake(0.0, 0.0, 100.0, 100.0)];
pickerView2.delegate = self;
pickerView2.tag = kVIEW2_PICKERVIEW_TAG;
pickerView2.showsSelectionIndicator = YES;
[myView2 addSubview:pickerView2];
-
@Legolas是实例变量的缩写。@Legolas,刻度盘上充满了数字,但我无法旋转它。。。无[self.view addSubview:pickerView1]//
#define kVIEW1_PICKERVIEW_TAG 123
#define kVIEW2_PICKERVIEW_TAG 456
UIView *myView1 = [[UIView alloc] initWithFrame:CGRectMake(0, 100, 100, 100)];
UIView *myView2 = [[UIView alloc] initWithFrame:CGRectMake(20, 250, 100, 100)];
[myView1 setBackgroundColor:[UIColor blueColor]];
[myView2 setBackgroundColor:[UIColor redColor]];
[self.view addSubview:myView1];
[self.view addSubview:myView2];
UIPickerView *pickerView1 = [[UIPickerView alloc] initWithFrame:CGRectMake(0.0, 0.0, 100.0, 100.0)];
pickerView1.delegate = self;
pickerView1.tag = kVIEW1_PICKERVIEW_TAG;
pickerView1.showsSelectionIndicator = YES;
[myView1 addSubview:pickerView1];
UIPickerView *pickerView2 = [[UIPickerView alloc] initWithFrame:CGRectMake(0.0, 0.0, 100.0, 100.0)];
pickerView2.delegate = self;
pickerView2.tag = kVIEW2_PICKERVIEW_TAG;
pickerView2.showsSelectionIndicator = YES;
[myView2 addSubview:pickerView2];
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
switch( pickerView.tag ) {
case kVIEW1_PICKERVIEW_TAG:
/* code */
break;
case kVIEW2_PICKERVIEW_TAG:
/* code */
break;
default:
break;
}
}