我有一个选择器视图,当选择了一个选择器视图的行组件时,它导航到一个视图,我有一个按钮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中的选择器视图。
以下是崩溃地点的屏幕截图
并在控制台中,消息显示如下图所示:
任何专家都可以指出我出错的地方......
请提前帮助我提出宝贵的建议:)
对不起伙计们,我发现了什么是错误,我没有保留阵列一旦被自动释放,而不是:
groupArr = [[[NSMutableArray alloc] initWithObjects:@“Family”,@“Friends”,@“Office”,@“Acquaintances”,nil] autorelease];
是self.groupArr = ....;
感谢所有观看过的人以及为解决问题做出贡献的人们。)
答案 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。