按钮操作的选择器视图崩溃了

时间:2011-12-26 12:41:18

标签: iphone uipickerview ibaction

我有一个选择器视图,当选择了一个选择器视图的行组件时,它导航到一个视图,我有一个按钮changeGroup.On点击选择器视图必须出现的按钮,但它没有发生!它崩溃了

这是我的代码:

- (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:@“Family”,@“Friends”,@“Office”,@“Acquaintances”,nil] autorelease];

是self.groupArr = ....;

感谢所有观看过的人以及为解决问题做出贡献的人们。)

2 个答案:

答案 0 :(得分:1)

你的groupArr数组由于自动释放而失去了它的含量。所以改变这个

groupArr = [[NSMutableArray alloc] initWithObjects:@“Family”,@“Friends”,@“Office”,@“Acquaintances”,nil];

[groupArr retain];

答案 1 :(得分:0)

在.h文件中添加UIPickerViewDelegate。

在.m文件中,添加PickerView委托和数据源方法。 数据源:

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

代表:

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

有关详细信息,请参阅Apple的UIPickerView class