Не могу решить двойной подборщик с изображениями - PullRequest
0 голосов
/ 11 февраля 2012

Я пытаюсь сделать двойной подборщик, одну часть текста, а другую с изображениями.Но код дает мне ошибку: Thread 1: Program received signal: "EXC_BAD_ACCESS".Я не вижу проблемы.Вот код, изображения массива изображений и текст содержимого Array2.Спасибо.

@synthesize Array, picker, Array2;

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
}

#pragma mark - View lifecycle

- (void)viewDidLoad
{
    UIImage *one = [UIImage imageNamed:@"6-12AM.png"];
    UIImageView *oneView = [[UIImageView alloc] initWithImage:one];
    NSArray *Array1 = [[NSArray alloc] initWithObjects:oneView, nil];
    NSString *fieldName = [[NSString alloc] initWithFormat:@"Array"];
    [self setValue:Array1 forKey:fieldName];
    Array2 = [[NSArray alloc] initWithObjects:@"Hello", @"trouble", nil];
    [super viewDidLoad];

}

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView;
{

        return 2;// giving number of components in PickerView

    }

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:    (NSInteger)component;
{

    return [self.Array2 count];// counting the number of rows in each component

}

#pragma mark Picker Delegate Methods

- (UIView *)pickerView:(UIPickerView *)pickerView 
            viewForRow:(NSInteger)row
          forComponent:(NSInteger)component 
           reusingView:(UIView *)view 
{
    if (component == 1) {


        return [self.Array objectAtIndex:row];
    }
}   //In this line is where the error occurs

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

Ответы [ 2 ]

2 голосов
/ 24 марта 2012

Ваша ошибка связана с тем, что вы не предлагаете альтернативу утверждению if. Не пустая функция должна возвращать что-то в каждом случае, поэтому вам нужно предоставить оператор else в каждой из двух ваших функций, который возвращает значение (например, nil).

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

Я не вижу, чтобы вы выделяли или инициализировали массив. Отсюда плохой доступ. Вы хотели использовать Array1?

Также несколько вещей:

  1. Памяти выделено несколько мест, никогда не освобождаемых. Утечки по всему
  2. Имена переменных должны начинаться с маленьких заглавных букв, таких как array1, array2
  3.  [self setValue:Array1 forKey:fieldName];   //what is this doing?
    
...