UIPickerView - один компонент как изображение, другой как текст - PullRequest
0 голосов
/ 25 марта 2012

Я пытаюсь создать двухкомпонентный UIPickerView, в левой части которого находятся значения игральных карт (два, три, Джек и т. Д.), А в правой части находятся изображения четырех мастей. Вот соответствующий код:

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {
      return 2;
}

- (NSInteger)pickerView:(UIPickerView *)pickerView
numberOfRowsInComponent:(NSInteger)component {
      if (component == 0)
            return [self.values count];
      return [self.column1 count];
}


- (NSString *)pickerView:(UIPickerView *)pickerView
         titleForRow:(NSInteger)row
        forComponent:(NSInteger)component {
      if (component == 0)
            return [self.values objectAtIndex:row];
      else 
            return nil;
}

- (UIView *)pickerView:(UIPickerView *)pickerView
        viewForRow:(NSInteger)row
      forComponent:(NSInteger)component reusingView:(UIView *)view {
      if(component == 1){
          NSString *arrayName = [[NSString alloc] initWithFormat:@"column1"];
          NSArray *array = [self valueForKey:arrayName];
          return [array objectAtIndex:row];
      }
      else
           return nil;
}

Как вы, вероятно, видите, я попытался создать отдельный метод делегата средства выбора для левого компонента и правого компонента. Тем не менее, это не дает мне ожидаемых результатов. Кажется, код выполняет только метод viewForRow, игнорируя другой. Таким образом, я получаю правый компонент, заполненный изображениями, а левый компонент пустым. Кто-нибудь знает по-разному заполнить оба компонента?

1 Ответ

1 голос
/ 25 марта 2012

Возможно, как только вы реализуете viewForRow:, он выигрывает titleForRow:.

Просто верните UILabel с нужным текстом. Ведь titleForRow: больше ничего не делает. Это просто более удобный способ, если вам нужны ТОЛЬКО этикетки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...