Двойной вид сборщика - PullRequest
       14

Двойной вид сборщика

0 голосов
/ 10 февраля 2012

Здравствуйте, я работаю в режиме двойного выбора с изображениями, односторонним текстом и другими изображениями, но я не могу заставить его работать. Вот компоненты комплектации. Существует 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]; 
        }
}
}

1 Ответ

2 голосов
/ 10 февраля 2012

Позвольте мне указать на несколько проблем с вашим кодом.

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

Если это все еще не работает, пожалуйста, более конкретно о том, что не работает.

...