Picker View для действия кнопки при сбое - PullRequest
0 голосов
/ 26 декабря 2011

У меня есть представление выбора, когда выбран компонент строки представления выбора, он переходит к представлению, там у меня есть кнопка changeGroup. При нажатии на кнопку должно появиться представление выбора, но этого не происходит!Его сбой

Вот мой код:

- (void)viewDidLoad
{
groupArr = [[[NSMutableArray alloc]initWithObjects:@"Family",@"Friends",@"Office",@"Acquaintances", nil]autorelease];
    agrpPicker.hidden  = YES;
}

#pragma mark-
#pragma mark PickerView Datasource

-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
    int number = 0;

    if (agrpPicker.hidden == NO) 
    {
        number = 1;
    }

    return number;
}
-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
    int count = 0;
    if (agrpPicker.hidden == NO) 
    {
        count = [self.groupArr count];
    }
    return count;
}

#pragma mark-
#pragma mark PickerView Delegate

-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
    NSString *str = [[[NSString alloc]init]autorelease];

    if (agrpPicker.hidden == NO) 
    {
        str = [self.groupArr objectAtIndex:row];
    }

    return str;
}

Это действие для кнопки, которая должна отображаться в окне выбора:

-(IBAction)groupButtonSelceted:(id)sender
{
    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:0.6];
    CGAffineTransform transfrom = CGAffineTransformMakeTranslation(0, 200);
    agrpPicker.transform = transfrom;
    [UIView commitAnimations];
    agrpPicker.hidden = [agrpPicker isHidden] ? NO : YES;
    [self.view addSubview:agrpPicker];
}

подключила этот вид выбора кпредставление выбора в IB.

Вот снимок экрана, на котором произошел сбой

enter image description here

, и в консоли сообщение выглядит как снимокниже:

enter image description here

Может ли любой эксперт указать мне, где я ошибся ...

Пожалуйста, помогите мне с вашими ценными предложениями, заранее спасибо:)

Извините, ребята, я выяснил, в чем была ошибка, я не сохранил массив после его автоматического освобождения, вместо:

groupArr = [[[NSMutableArray alloc] initWithObjects:@ "Семья", @ "Друзья", @ "Офис", @ "Знакомства", ноль] авто-релиз];

это self.groupArr = ....;

Спасибо завсем, кто просматривал и для тех, кто внес свой вклад в решение проблемы:)

Ответы [ 2 ]

1 голос
/ 27 декабря 2011

ваш массив groupArr теряет свою константу из-за автоматического выпуска. так что измени это

groupArr = [[NSMutableArray alloc] initWithObjects: @ "Семья", @ "Друзья", @ "Офис", @ "Знакомства", ноль];

[groupArr retain];

0 голосов
/ 26 декабря 2011

Добавить UIPickerViewDelegate в файл .h.

А в файле .m добавьте методы делегата PickerView и источник данных. Datasource:

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

Делегат:

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component;

Подробнее см. В UIPickerView class от Apple.

...