2012-02-10 20 views
0

你好im工作与图像,单面文本和其他图像的双选择器视图,但我不能让它的工作。这里是选择器组件。有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

请列出你想要的行为和你观察到的行为。另外,请详细说明任何错误。 – 2012-02-16 02:16:52

回答

2

让我指出你的代码的几个问题。

  1. 您启动方法块之前有;numberOfRows方法结束。这是行不通的。
  2. 您正在使用大写第一个字母作为实例变量 - 坏主意。
  3. 您没有使用else子句,导致测试在不再需要时运行。
  4. 嵌套if语句的方式也会创建重复代码。

由于图像阵列中的内容,您可能没有看到任何图像。这个数组,你使用它的方式应该包含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; 
} 

如果它仍然无效,请更具体地说明什么是不工作。

+0

我看你是怎么做到的,但是它的图像列表很大,所以我在viewDidLoad中创建了图像数组。当我运行它时产生这个错误线程1:Proram接收信号:“EXC_BAD_ACCESS”。并感谢你的帮助Mundi。 – 2012-02-10 20:24:45