由于缺少屏幕空间,我尝试在用户旋转滚轮时在UIPickerView中显示图像的描述(旋转时UILabel出现在pickerView右侧)。我使用viewForRow:检测旋转并显示描述。问题是,使用我到目前为止编写的代码,它无法显示前2行和后2行的描述。 这是我的代码:
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view
{
UIImageView *image=[[[UIImageView alloc]initWithImage:[UIImage imageNamed:[zodiacSigns objectAtIndex:row]]]autorelease];
selectedZodiac.frame=CGRectMake(80, 80, 50, 50);
selectedZodiac.hidden=NO;
@try {
//Here -2 is offset of the view in central row
selectedZodiac.text=[zodiacSigns objectAtIndex:row-2];
}
@catch (NSException *exception) {
NSLog(@"Exception caught");
}
@finally {
}
if([yourZodiacPicker selectedRowInComponent:0]!=0)
{
[self.view insertSubview:selectedZodiac aboveSubview:self.view];
}
NSLog(@"reuseView");
return image;
}
非常感谢任何帮助!
答案 0 :(得分:2)
我想最好的方法是使用ScrollView / TableView和匹配的叠加图像重新创建PickerView,如果你真的需要这个功能的话。
禁用选择/突出显示并滚动到最近的"单元格"当滚动视图停止时。
然后确定屏幕中间的单元格。 您还应该在内容之前和之后添加视图,以便用户可以将第一个/最后一个单元格移动到屏幕中间。
答案 1 :(得分:-1)
我可能误解了,但如果你想要的是显示当前所选图像的描述,你应该实现pickerView:didSelectRow:inComponent:并在那里设置描述标签,而不是在viewForRow:forComponent:中进行。它会是这样的:
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
selectedZodiac.frame=CGRectMake(80, 80, 50, 50);
selectedZodiac.hidden=NO;
selectedZodiac.text=[zodiacSigns objectAtIndex:row];
}
这样您就会始终显示所选选择行的描述。