Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 双选择器视图_Iphone_Xcode4_Uipickerview - Fatal编程技术网

Iphone 双选择器视图

Iphone 双选择器视图,iphone,xcode4,uipickerview,Iphone,Xcode4,Uipickerview,您好,我正在使用一个双选择器视图,其中包含图像、一面文本和其他图像,但我无法使其正常工作。这是选择器组件。有3个数组,数组和数组1内容文本和图像数组内容图像。它是一个变量,取决于你按下的按钮。谢谢 - (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView; { return 2; } - (NSInteger)pickerView:(UIPickerView *)pickerView numberOfR

您好,我正在使用一个双选择器视图,其中包含图像、一面文本和其他图像,但我无法使其正常工作。这是选择器组件。有3个数组,数组和数组1内容文本和图像数组内容图像。它是一个变量,取决于你按下的按钮。谢谢

- (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]; 
        }
}
}

让我指出代码中的一些问题

  • 你有一个
    numberOfRows
    方法的末尾执行code>。那不行
  • 您正在使用大写的第一个字母作为示例变量-这不是个好主意
  • 您没有使用
    else
    子句,导致测试在不再需要时运行
  • 嵌套if语句的方式也会产生重复的代码
  • 您可能没有看到任何图像,因为图像数组中有什么。此数组(您使用它的方式)应包含UIImageView。然而,这将破坏可重用视图的目的。相反,您应该有一个带有图像或图像名称的数组,并仅在必要时创建视图

    - (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;
    }
    

    如果它仍然不起作用,请更具体地说明什么不起作用。

    我知道你是怎么做的,但这是一个很大的图像列表,因此我在ViewDiLoad中创建图像数组。当我运行它时,生成这个错误线程1:Proram接收到信号:“EXC\u BAD\u ACCESS”。感谢你的帮助,请列出你想要的行为和观察到的行为。此外,请提供任何错误的详细信息。