您好我正在使用带有图像,单面文本和其他图像的双选择器视图,但我无法使其工作。这是拾取器组件。有3个数组,Array和Array1内容文本,以及ImagesArray内容图像。 X是一个变量,取决于你按下的按钮。感谢。
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView;
{
return 2;
}
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent: (NSInteger)component;
{
if (X == 1) {
if (component == 0) {
return [self.Array count];
}
if (component == 1)
{
return [self.ImagesArray count];
}
}
if (X == 2) {
if (component == 0) {
return [self.Array1 count];
}
if (component == 1) {
return [self.ImagesArray count];
}
}
}
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view{
if (component == 1){
return [self.ImagesArray objectAtIndex:row];
}
}
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component;
{
if (X == 1){
if (component == 0)
{
return [self.Array objectAtIndex:row];
}
}
if (X == 2) {
if (component == 0){
return [self.Array1 objectAtIndex:row];
}
}
}
答案 0 :(得分:2)
让我指出一些代码问题。
;
方法的末尾有一个numberOfRows
。那不行。else
子句,导致测试在不再需要时运行。您可能没有看到任何图像,因为您的图像阵列中有什么。这个数组,你使用它的方式,应该包含UIImageViews。但是,这会破坏可重用视图的目的。相反,您应该有一个包含图像或图像名称的数组,并仅在必要时创建视图。
- (UIView *)pickerView:(UIPickerView *)pickerView
viewForRow:(NSInteger)row
forComponent:(NSInteger)component
reusingView:(UIView *)view{
if (component!=1) return nil;
UIImageView *imageView = nil;
UIImage *image = [UIImage imageNamed:[self.imagesArray objectAtIndex:row]];
if (view==nil) {
imageView = [[UIImageView alloc] initWithImage:image];
}
else {
imageView = (UIImageView *)view;
imageView.image = image;
}
view = imageView;
return view;
}
如果仍然不起作用,请更具体地说明哪些不起作用。