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

Posted

技术标签:

【中文标题】按钮操作的选择器视图崩溃【英文标题】:Picker View for button action getting crashed 【发布时间】:2011-12-26 12:41:18 【问题描述】:

I have a picker view,when the row component of a picker view is selected,it navigates to a view,there I have a button changeGroup.On clicking the button the picker view must appear,but it is not happening!崩溃了

这是我的代码:

- (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 = ....;

感谢所有查看过的人和为解决问题做出贡献的人:)

【问题讨论】:

你能把崩溃日志也放在这里吗? @rishi 是的 Rishi 先生,我已经放了一个快照以便清楚理解,请参阅编辑后的答案,提前谢谢:) 根据屏幕截图,这似乎是内存问题,引用了未分配的对象。控制台日志中是否也有任何内容? 控制台 Mr.Rishi 除了 (gdb) 没有任何内容 您能否分享您在应用程序中拥有的选择器视图的代码,代码本身有问题。 【参考方案1】:

由于自动释放,您的 groupArr 数组正在失去其内容。所以改变这个

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

[groupArr 保留];

【讨论】:

感谢您的回答,但我还是使用 self.groupArr = [[NSMutableArray alloc]initWithObjects:@"Family",@"Friends",@"Office",@"Acquaintances" 修复了它, 无]; 重新加载选择器视图。使用此代码 [agrpPicker reloadAllComponents];按下按钮时【参考方案2】:

在 .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。

【讨论】:

请查看已编辑的问题(帖子),请提供解决方案,谢谢您的回答:)

以上是关于按钮操作的选择器视图崩溃的主要内容,如果未能解决你的问题,请参考以下文章

为啥这段代码在运行时会崩溃?它只是选项卡式视图中 SwiftUI 中的选择器

Android实用视图动画及工具系列之九:漂亮的图片选择器,高性能防崩溃图片选择工具

从另一个类触摸时的 Swift 按钮操作选择器:无法识别的选择器发送到实例

选择表格单元格以显示 iOS7 上的新视图崩溃,“无法识别的选择器发送到实例”

自定义表视图控制器因“initWithCoder:无法识别的选择器发送到实例”而崩溃

UIButton 调用选择器使应用程序崩溃